pax_global_header00006660000000000000000000000064146766061530014530gustar00rootroot0000000000000052 comment=f92cba6ffc77c000db61c2024fb00e9533a919e2 flatseal-2.3.0/000077500000000000000000000000001467660615300133255ustar00rootroot00000000000000flatseal-2.3.0/.eslintrc.yml000066400000000000000000000127771467660615300157670ustar00rootroot00000000000000--- env: es6: true extends: 'eslint:recommended' rules: accessor-pairs: error array-bracket-newline: - error - consistent array-bracket-spacing: - error - never array-callback-return: error arrow-parens: - error - as-needed arrow-spacing: error block-scoped-var: error block-spacing: error brace-style: - error - 1tbs class-methods-use-this: error comma-dangle: - error - always-multiline comma-spacing: - error - after: true before: false comma-style: - error - last complexity: error computed-property-spacing: - error - never consistent-return: error curly: - error - multi-or-nest - consistent default-case: error dot-location: - error - property eol-last: error eqeqeq: error for-direction: error func-call-spacing: error func-name-matching: error func-names: - error - never func-style: - error - declaration generator-star-spacing: error getter-return: error global-require: error guard-for-in: error handle-callback-err: error indent: - error - 4 - MemberExpression: 'off' key-spacing: error keyword-spacing: - error - after: true before: true linebreak-style: - error - unix lines-around-comment: error lines-around-directive: error lines-between-class-members: error max-depth: error max-len: - error - code: 120 comments: 80 max-nested-callbacks: error max-statements-per-line: error new-parens: error newline-per-chained-call: error no-array-constructor: error no-await-in-loop: error no-caller: error no-catch-shadow: error no-confusing-arrow: error no-div-regex: error no-else-return: error no-empty: - error - allowEmptyCatch: true no-empty-function: error no-eq-null: error no-eval: error no-extend-native: error no-extra-bind: error no-extra-label: error no-extra-parens: - error - all - conditionalAssign: false returnAssign: false no-floating-decimal: error no-invalid-this: error no-iterator: error no-label-var: error no-labels: error no-lone-blocks: error no-lonely-if: error no-loop-func: error no-multi-assign: error no-multi-spaces: - error - ignoreEOLComments: true no-multiple-empty-lines: error no-native-reassign: error no-negated-condition: error no-negated-in-lhs: error no-nested-ternary: error no-new: error no-new-func: error no-new-object: error no-new-wrappers: error no-octal-escape: error no-param-reassign: error no-proto: error no-restricted-syntax: - error # Use ES6 classes rather than Lang.Class - "NewExpression > MemberExpression[object.name='Lang']\ [property.name='Class']" # Use arrow functions or Function.bind rather than Lang.bind - "CallExpression > MemberExpression[object.name='Lang']\ [property.name='bind']" # Use super rather than this.parent() - "CallExpression > MemberExpression[object.type='ThisExpression']\ [property.name='parent']" # Use GLib timeouts rather than the mainloop module - MemberExpression[object.name='imports'][property.name='mainloop'] no-return-assign: error no-return-await: error no-self-compare: error no-sequences: error no-shadow: error no-shadow-restricted-names: error no-spaced-func: error no-tabs: error no-template-curly-in-string: error no-throw-literal: error no-trailing-spaces: error no-undef-init: error no-undefined: error no-unmodified-loop-condition: error no-unneeded-ternary: error no-unused-expressions: error no-use-before-define: error no-useless-call: error no-useless-computed-key: error no-useless-concat: error no-useless-constructor: error no-useless-rename: error no-useless-return: error no-whitespace-before-property: error no-with: error nonblock-statement-body-position: - error - below object-curly-newline: - error - consistent: true object-curly-spacing: error object-shorthand: 'off' operator-assignment: error operator-linebreak: error padded-blocks: - error - never prefer-const: error prefer-destructuring: error prefer-numeric-literals: error prefer-promise-reject-errors: error prefer-rest-params: error prefer-spread: error prefer-template: error quote-props: - error - as-needed quotes: - error - single - avoidEscape: true radix: error require-await: error rest-spread-spacing: - error - never semi: error semi-spacing: - error - after: true before: false semi-style: - error - last space-before-blocks: error space-before-function-paren: - error - named: never anonymous: never asyncArrow: always space-in-parens: - error - never space-infix-ops: error space-unary-ops: error spaced-comment: - error - always strict: - error - never switch-colon-spacing: error symbol-description: error template-curly-spacing: error template-tag-spacing: error unicode-bom: - error - never valid-jsdoc: error wrap-iife: error wrap-regex: error yield-star-spacing: error yoda: - error - never # GJS, SpiderMonkey and Jasmine global objects globals: ARGV: false imports: false Intl: false log: false logError: false print: false printerr: false window: false _: false pkg: false describe: false beforeEach: false it: false expect: false spyOn: false beforeAll: false afterAll: false parserOptions: ecmaVersion: 2018 flatseal-2.3.0/.github/000077500000000000000000000000001467660615300146655ustar00rootroot00000000000000flatseal-2.3.0/.github/workflows/000077500000000000000000000000001467660615300167225ustar00rootroot00000000000000flatseal-2.3.0/.github/workflows/CI.yml000066400000000000000000000007031467660615300177400ustar00rootroot00000000000000on: push: branches: [master] pull_request: name: CI jobs: testing: runs-on: ubuntu-latest container: image: ghcr.io/andyholmes/flatter/gnome:47 options: --privileged steps: - name: Checkout uses: actions/checkout@v4 with: submodules: true - name: Build uses: andyholmes/flatter@main with: files: com.github.tchx84.Flatseal.json run-tests: trueflatseal-2.3.0/.gitignore000066400000000000000000000000351467660615300153130ustar00rootroot00000000000000.flatpak-builder/ build-dir/ flatseal-2.3.0/CHANGELOG.md000066400000000000000000000236521467660615300151460ustar00rootroot00000000000000# Changelog ## [2.3.0] - 2024-09-30 - Added support for the new inherit-wayland-socket permission. - Added Hindi translation. - Changed to AppStream 1.0. - Changed to GNOME 47 runtime for stability. ## [2.2.0] - 2024-04-18 * Added Greek translation. * Fixed parsing environment variables with certain characters. * Fixed filesystem permissions still showing up after being removed globally. * Fixed filesystem permissions not showing up after redundantly added globally. * Changed adaptive behavior to mimic GNOME Settings. * Changed navigation experience to mimic GNOME Settings. * Changed to Adw.AboutDialog for better adaptive behavior. ## [2.1.2] - 2024-03-26 - Added brand colors to appdata. - Fixed appdata to pass new Flathub checks. - Fixed Hungarian translation. - Changed to GNOME 46 runtime for stability. ## [2.1.1] - 2024-02-06 - Fixed crashes on some Ubuntu systems due to missing file monitor support. - Fixed falling back to appdata file when metainfo file is missing. - Fixed not being able to remove persist global overrides. - Fixed Russian translation. - Fixed French translation. ## [2.1.0] - 2023-09-28 - Fixed validations for the persist section, e.g. to prevent line breaks. - Fixed handling of broken overrides files. - Fixed Italian translation. - Fixed German translation. - Added Norwegian Bokmål translation. - Added support for the new input permission. - Added save and restore selected application. - Added detection of applications installs and uninstalls. - Added detection of external changes to permissions, e.g. using flatpak-override. - Changed to Libadwaita 1.4 for visual refinements and better performance. - Changed to GNOME 45 runtime for stability. ## [2.0.2] - 2023-07-07 - Fixed GNOME Software not showing the application icon. - Added Ukrainian translation. ## [2.0.1] - 2023-05-04 - Fixed window bouncing between folded and unfolded mode. - Fixed styling of applications list rows. ## [2.0.0] - 2023-04-27 - Fixed re-enabling show-details button when GNOME Software is unavailable. - Fixed Tamil mnemonics translation. - Fixed validations for other-files section, e.g. to allow trailing slashes. - Added popover for XDG paths suggestions. - Added type-to-search for applications. - Changed to GTK 4 and Libadwaita. - Changed to GNOME 44 runtime for stability. ## [1.8.1] - 2022-10-15 - Fixed tooltips on unsupported permissions rows. - Fixed weird interactions with filesystem reset mode. - Fixed French translation. - Fixed Chinese (China) translation. - Added support for new gpg-agent permission. - Added Hebrew translation. - Added Tamil translation. - Changed Flatpak icon to the latest version. - Changed globally overridden status icon to use a different color. - Changed environment variables validation to allow spaces. - Changed to GNOME-runtime AppStreamGlib installation. - Changed to GNOME 43 runtime for stability. ## [1.8.0] - 2022-05-30 - Fixed issues with forbidden modes on removed filesystem permissions. - Fixed a few typos in offline documentation. - Fixed creation of overrides directory on non-Flatpak distributions. - Fixed Polish translation. - Added Bulgarian translation. - Added Danish translation. - Added Chinese (China) translation. - Added support for system color schemes. - Added support for taking global overrides into account. - Added support for editing global overrides. - Added support for highlighting overridden permissions. - Changed shortcuts window to be modal. - Changed documentation window to be modal. - Changed meson to 0.59. - Changed to GNOME 42 runtime for stability. ## [1.7.5] - 2021-11-19 - Fixed Russian translation. - Fixed icons to look sharper. - Fixed loading originally-negated permissions. - Fixed instances of undefined overrides. - Added Turkish translation. - Added French translation. - Added support for keyboard navigation. - Added support for per-app-dev-shm permission. - Added support for negated filesystem permissions. - Changed more custom widgets for libhandy widgets. - Changed to sorting applications by name. - Changed to GNOME 41 runtime for stability. ## [1.7.4] - 2021-06-11 - Fixed crash on Arch due to broken permission store. - Added Catalan translation. - Added Russian translation. - Added keywords to find this app more easily using desktop search. ## [1.7.3] - 2021-05-26 - Fixed a few JS-usage and code-style issues. - Fixed variables overrides not handling properly RUST-related exports. - Fixed paths overrides mistakenly warning about directory names with spaces. - Added a way to unset individual portal permissions. - Added support to save and restore the main window state. - Changed to the GNOME-runtime libhandy installation. ## [1.7.2] - 2021-05-12 - Fixed crash when partial tables are present on the permission store. ## [1.7.1] - 2021-05-08 - Fixed crashing at startup on Gentoo. - Fixed styling for the no applications found message. - Added Ctrl+F accelerator for activating search. - Changed reset behavior to forget portals decisions. ## [1.7.0] - 2021-04-22 - Added initial support for portal permissions. - Added offline documentation. - Fixed show-details button freezing the application. - Changed applications search option to be toggleable. - Changed UI to better utilize libhandy's widgets. - Changed to libhandy 1.2.1 for smoother transitions. - Changed to GNOME 40 runtime for stability. ## [1.6.8] - 2021-01-30 - Fixed searching by application name and not only by app id. - Fixed application freezing due to malformed regex. ## [1.6.7] - 2021-01-16 - Fixed window close-button not visible in applications page, when folded. - Added Polish translation by @Garbulix. ## [1.6.6] - 2021-01-01 - Fixed main title so that it doesn't display the selected app name. - Fixed issue with removed environment variables still showing up. - Fixed Czech translation. - Added more examples to the documentation. - Changed shared memory description to not mention JACK anymore. ## [1.6.5] - 2020-11-28 - Fixed main window jumping sizes at launch in mobile mode. - Fixed regression for properly showing the close button to the left corner. - Fixed sandbox detection for old Flatpak versions. ## [1.6.4] - 2020-11-14 - Added latest contributors to credits. - Added metadata needed by Phosh. - Added support for directory variables, e.g. FLATPAK_USER_DIR. - Added link to Flatseal specific documentation. - Fixed border colors in dark mode. - Fixed default applications icon on high-DPI. - Changed to latest libhandy. ## [1.6.3] - 2020-10-12 - Added support for changing user-installation directory with XDG_DATA_HOME. - Added support for undo reset. - Fixed Leaflet geddan-meme effect when resizing window. - Fixed starting at permissions page in compact mode. - Fixed failing to start when session-bus is missing. - Changed spacing between menu items to improve touchscreen ergonomics. - Changed to latest versions of all libraries and runtimes. ## [1.6.2] - 2020-08-28 - Fixed crash on possibly malformed desktop files. ## [1.6.1] - 2020-08-07 - Changed group names to mimic permissions names, e.g. "allow" instead of "features". - Fixed crashing when multiple libhandy versions available. - Fixed missing icons for some applications, e.g. LibreOffice. - Fixed enabling header bar buttons when no applications found. - Added support for session and system bus overrides. ## [1.6.0] - 2020-06-25 - Added Swedish translation. - Added showing applications basic information. - Added showing details button to re-direct the user to a software manager application page. - Added support for environment variables overrides. - Added support for persistent overrides. - Fixed handling unsupported permissions, so flatpak-override CLI can be used in parallel. - Changed reset button layout in mobile mode, for improved ergonomics. ## [1.5.3] - 2020-05-02 - Added Indonesian translation. - Added support for custom installations paths. - Added TIPSANDTRICKS.md with common tricks. ## [1.5.2] - 2020-04-04 - Added host-os and host-etc filesystems permissions. - Fixed clearing the custom filesystems viewer when no custom files. - Fixed properly showing the close button to the left corner. ## [1.5.1] - 2020-03-21 - Changed using the term "other" instead of "custom". - Fixed displaying the real application name. - Fixed visually-annoying borders around permissions view. - Fixed segfault on aarch64 by bumping runtime version to 3.36. ## [1.5.0] - 2020-03-07 - Added disabling permissions not supported by the installed version of Flatpak. - Added CAN bus permission. - Added smart cards permission. - Added virtualization permission. - Added shared memory permission. - Added displaying human-readable description for filesystem permissions. - Added validating filesystem permission paths. - Added grouping permissions as per existent Flatpak-defined groups. - Changed order of permissions to follow the same order as in Flatpak docs. - Changed alignment of custom filesystems text to the left. - Fix contrast in applications icons. ## [1.4.2] - 2020-02-21 - Added disabling reset button when no permissions changed. - Added new icon from J.P. MacDonald and Tobias Bernard. - Fixed saving pending changes when selecting apps or shutting the app down very quickly. - Fixed hiding meaningful section of the app id in mobile mode headerbar title. - Fixed not being able to close the about-me dialog when the close button is forcibly shown. - Fixed font relative sizes not being preserved in custom themes. ## [1.4.1] - 2020-02-15 - Fixed handling negated filesystems permissions. - Fixed unintended Spanish translation. ## [1.4.0] - 2020-02-14 - Added Hungarian, Dutch and Italian translations by the community. - Added new editor for custom filesystems permissions. - Added autocompletion for xdg directories in custom filesystems permissions. - Added menu entry for permissions documentation. - Added specific tests for filesystems permissions. - Added tests for new custom widgets. - Fixed window size in mobile mode. - Fixed modifying existing filesystems permissions. - Fixed test for detecting no changes condition. - Fixed showing BaseApp bundles. flatseal-2.3.0/COPYING000066400000000000000000001045141467660615300143650ustar00rootroot00000000000000 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 . flatseal-2.3.0/DOCUMENTATION.md000066400000000000000000000316441467660615300156700ustar00rootroot00000000000000# Documentation ## Table of contents - [Permissions](#permissions) - [Share](#share) - [Socket](#socket) - [Device](#device) - [Allow](#allow) - [Filesystem](#filesystem) - [Persistent](#persistent) - [Environment](#environment) - [System Bus](#system-bus) - [Session Bus](#system-bus) - [Portals](#portals) - [Tips and Tricks](#tips-and-tricks) - [Manually reset Flatseal permissions](#manually-reset-flatseal-permissions) - [Add new translations](#add-new-translations) - [Enable custom installations](#enable-custom-installations) - [Use custom FLATPAK_USER_DIR](#use-custom-flatpak_user_dir) ## Permissions This is the list of permissions supported by Flatseal. These descriptions are based on Flatpak's [official documentation](https://docs.flatpak.org/en/latest/sandbox-permissions.html) and extended with examples and references to make it easier for newcomers to understand. To summarize it, Flatpak provides two different permissions models: static and dynamic Static refers to the permissions set by the developers when applications are built. Static permissions are holes in the sandbox, e.g. an application built with `--filesystem=home` can access _all_ user personal files. The benefit of this model is that developers can support Flatpak without any change in their applications code. Both Flatseal and `flatpak override` command-line tool, use the overrides backend to manage static permissions. Dynamic refers to the permissions granted by the users when applications run. Dynamic permissions rely on resource providers called [Portals](https://github.com/flatpak/flatpak/wiki/Portals) and can require user confirmation, e.g. users can grant access to _one_ specific file thanks to the `org.freedesktop.portal.FileChooser` portal. The benefit of this model is that users don't need to trust applications with more resources than is strictly needed. Both Flatseal and `flatpak permissions` command-line tool, use the `org.freedesktop.impl.portal.PermissionStore` service to manage dynamic permissions. ### Share Name | Type | Description | `flatpak override` equivalent --- | --- | --- | --- Network | Toggle | Allow the application to have access to the network.

For example, if it's disabled for Firefox, it will no longer be possible to browse the internet with this application. | `--share=network` and `--unshare=network` [Inter-process communications](https://en.wikipedia.org/wiki/Inter-process_communication) | Toggle | Share IPC namespace with the host.

This is required by X11 due to it depending on IPC. | `--share=ipc` and `--unshare=ipc` ### Socket Name | Type | Description | `flatpak override` equivalent --- | --- | --- | --- X11 windowing system | Toggle | Allow the application to open in an X11 window.

Most applications use X11 for historical reasons, but is considered less secure. | `--socket=x11` and `--nosocket=x11` Wayland windowing system | Toggle | Allow the application to open in a Wayland window.

Many applications do not use Wayland as it is a newer display protocol unlike X11, and is considered more secure, but either some applications require extra steps to use it (see [environment variables](#environment) example for Firefox), or do not support Wayland at all. | `--socket=wayland` and `--nosocket=wayland` Fallback to X11 windowing system | Toggle | Allow the application to open in an X11 window when Wayland is not available. This overrides the X11 windowing system option when enabled. | `--socket=fallback-x11` and `--nosocket=fallback-x11` PulseAudio sound server | Toggle | Allow the application to play sounds or get access to the microphone when using PulseAudio.

For example, if it's disabled for Rhythmbox, it will no longer be possible to listen to the music with this application. | `--socket=pulseaudio` and `--nosocket=pulseaudio` D-Bus session bus | Toggle | Allow the application to have access to the entire session bus. | `--socket=session-dbus` and `--nosocket=session-dbus` D-Bus system bus | Toggle | Allow the application to have access to the entire system bus. | `--socket=system-dbus` and `--nosocket=system-dbus` Secure Shell agent | Toggle | Allow the application to use SSH authentications. | `--socket=ssh-auth` and `--nosocket=ssh-auth` [Smart cards](https://wiki.debian.org/Smartcards) | Toggle | Allow the application to use smart cards. | `--socket=pcsc` and `--nosocket=pcsc` Printing system | Toggle | Allow the application to use printing systems.

For example, if it's disabled for LibreOffice, it will no longer be possible to print documents with this application. | `--socket=cups` and `--nosocket=cups` GPG-Agent directories | Toggle | Allow the application to access GPG-Agent directories. | `--socket=gpg-agent` and `--nosocket=gpg-agent` Inherit Wayland socket | Toggle | Allow passing WAYLAND_SOCKET environment variable to the sandbox.

For example, if it's disabled for Fcitx5, it won't be able to connect to Wayland and display its autocompletion dialogs. | `--socket=inherit-wayland-socket` and `--nosocket=inherit-wayland-socket` ### Device Name | Type | Description | `flatpak override` equivalent --- | --- | --- | --- GPU acceleration | Toggle | Allow the application to access the graphics direct rendering to take advantage of GPU acceleration. | `--device=dri` and `--nodevice=dri` Input devices | Toggle | Allow input device access.

Note that raw and virtual input devices could still require [All devices](#device) | `--device=input` and `--nodevice=input` Virtualization | Toggle | Allow the application to support virtualization. | `--device=kvm` and `--nodevice=kvm` Shared memory | Toggle | Allow the application to access shared memory. | `--device=shm` and `--nodevice=shm` All devices | Toggle | Allow the application to access all devices, such as webcam and external devices.

For example, if it's disabled for Element, it will no longer be possible to do video calls with this application. | `--device=all` and `--nodevice=all` ### Allow Name | Type | Description | `flatpak override` equivalent --- | --- | --- | --- Development syscalls | Toggle | Allow the application to access to certain syscalls, such as [`ptrace()`](https://en.wikipedia.org/wiki/Ptrace) and [`perf_event_open()`](https://en.wikipedia.org/wiki/Perf_(Linux)). | `--allow=devel` and `--disallow=devel` Programs from other architectures | Toggle | Allow the application to execute programs for an [ABI](https://en.wikipedia.org/wiki/Application_binary_interface) other than the one supported natively by the system. | `--allow=multiarch` and `--disallow=multiarch` Bluetooth | Toggle | Allow the application to use Bluetooth. | `--allow=bluetooth` and `--disallow=bluetooth` Controller Area Network bus | Toggle | Allow the application to use canbus sockets. You must also have [network access](#share) for this to work. | `--allow=canbus` and `--disallow=canbus` Application Shared Memory | Toggle | Allow the application to share its /dev/shm between instances of the same $FLATPAK_APP_ID. Introduced specifically for the Steam flatpak, to share its /dev/shm with sub-sandboxed games. | `--allow=per-app-dev-shm` and `--disallow=per-app-dev-shm`. ### Filesystem Name | Type | Description | `flatpak override` equivalent --- | --- | --- | --- All filesystem files | Toggle | Allow read-write access to the whole filesystem. Everything that isn't writeable by the user will be read-only | `--filesystem=host` and `--nofilesystem=host` All system libraries, executables and static data | Toggle | Allow read-write access to system libraries located in `/usr`. Since this directory requires root access to write, the permission will be read-only. | `--filesystem=host-os` and `--nofilesystem=host-os` All system configurations | Toggle | Allow read-write access to system configurations located in `/etc`. Since this directory requires root access to write, the permission will be read-only. | `--filesystem=host-etc` and `--nofilesystem=host-etc` All user files | Toggle | Allow read-write access to the user directory (`$HOME` or `~/`). | `--filesystem=home` and `--nofilesystem=home` Other files | Input | Allow read-write access to the directory you desire.

For example, you would put `~/games` if you want read-write access to `~/games`. If you want read-only access to `~/games`, then you would put `~/games:ro`. | `--filesystem=[PATH]`, `--filesystem=[PATH]:ro` and `--nofilesystem=[PATH]` ### Persistent Name | Type | Description | `flatpak-override` equivalent --- | --- | --- | --- Files | Input | Allow the application to access the targeted directory while restricting other applications from accessing it.

Starting from the user directory (`$HOME` or `~/`), the targeted directory will be remapped to the application's directory (`~/.var/app/$FLATPAK_APP_ID/[PATH]`) if it has no write access to the targeted directory.

For example, persisting `.mozilla` will map `~/.mozilla` to `~/.var/app/org.mozilla.Firefox/.mozilla`.

This is also a technique used to declutter the user directory, as it prevents the application from writing to `~/`. | `--persist=[PATH]` ### Environment Name | Type | Description | `flatpak override` equivalent --- | --- | --- | --- Variables | Input | Set an environment variable in the application to make the variable available to application when it runs.

For example, adding `MOZ_ENABLE_WAYLAND=1` for Firefox to enable the Wayland back-end. | `--env=[VAR]=[VALUE]` ### System Bus Name | Type | Description | `flatpak override` equivalent --- | --- | --- | --- Talks | Input | Allow the application to talk to system services.

For example, adding `org.freedesktop.Accounts` will allow the application to access users login history. | `--system-talk-name=[NAME]` Owns | Input | Allow the application to own system services under the given name. | `--system-own-name=[NAME]` ### Session Bus Name | Type | Description | `flatpak override` equivalent --- | --- | --- | --- Talks | Input | Allow the application to talk to session services.

For example, adding `org.freedesktop.Notifications` will allow the application to send notifications. | `--talk-name=[NAME]` Owns | Input | Allow the application to own session services under the given name. | `--own-name=[NAME]` ### Portals Name | Type | Description | Portal --- | --- | --- | --- Background | Toggle | Allow the application to run in the background. | `org.freedesktop.portal.Background` Notifications | Toggle | Allow the application to send notifications. | `org.freedesktop.portal.Notification` Microphone | Toggle | Allow the application to listen to your microphone. | `org.freedesktop.portal.Device` Speakers | Toggle | Allow the application to play sounds to your speakers. | `org.freedesktop.portal.Device` Camera | Toggle | Allow the application to record videos with your camera. | `org.freedesktop.portal.Device` Location | Toggle | Allow the application to access your location data. | `org.freedesktop.portal.Location` ## Tips and Tricks ### Manually reset Flatseal permissions If permissions are removed and is no longer possible to reset, run the following command from the terminal and re-start Flatseal: ``` $ rm ~/.local/share/flatpak/overrides/com.github.tchx84.Flatseal ``` ### Add new translations Add a new language and update translations: ``` $ git clone https://github.com/tchx84/Flatseal.git $ cd Flatseal $ echo "es" >> po/LINGUAS # es for Spanish $ meson _translate && cd _translate $ ninja flatseal-pot $ ninja flatseal-update-po $ gedit ../po/es.po # translate the strings to Spanish ``` To test the translation language: ``` $ flatpak config --set languages es $ flatpak update org.gnome.Platform $ LC_ALL=es_PY.UTF-8 flatpak run com.github.tchx84.Flatseal ``` ### Enable custom installations To enable a custom installation, e.g, `/xusr/custom/flatpak`. #### Flatpak 1.7.1 or newer 1. Launch Flatseal and select it to edit its own permissions. 2. Enable `host-etc`, or type in `host-etc:ro` in the other option. 3. Type in the custom installation path, e.g, `/xusr/custom/flatpak:ro`. 4. Restart Flatseal. #### All versions 1. Launch Flatseal and select it to edit its own permissions. 2. Enable `host`, or type in `host:ro` in the other option. 3. Restart Flatseal. **NOTE**: To find these installations, Flatseal needs access to `/etc/flatpak/installations.d`. Before Flatpak 1.7.1, accessing the host `/etc` required the `host` permission, which was an all-or-nothing situation. By default, Flatseal will have minimal permissions, so it's up to the user to decide to enable this feature. ### Use custom FLATPAK_USER_DIR To use a custom `FLATPAK_USER_DIR`, e.g. `/var/home/user/.flatpak`. ``` flatpak --user override --filesystem=/var/home/user/.flatpak --env=FLATPAK_USER_DIR=/var/home/user/.flatpak com.github.tchx84.Flatseal ``` **NOTE**: By default, `FLATPAK_USER_DIR` is not accessible from within the Flatpak sandbox, and Flatseal has no access to custom directories. Therefore, these overrides are needed. flatseal-2.3.0/README.md000066400000000000000000000033231467660615300146050ustar00rootroot00000000000000# Flatseal ![CI](https://github.com/tchx84/Flatseal/workflows/CI/badge.svg) Flatseal is a graphical utility to review and modify permissions from your [Flatpak](https://flatpak.org/) applications. ## Usage Simply launch Flatseal, select an application and modify its permissions. Restart the application after making the changes. If anything goes wrong just press the reset button. For more details please visit the [documentation](./DOCUMENTATION.md) page. ## Get it [](https://flathub.org/apps/details/com.github.tchx84.Flatseal) ## Build it yourself ``` git clone https://github.com/tchx84/Flatseal.git cd Flatseal flatpak --user install org.gnome.{Platform,Sdk}//47 flatpak-builder --user --force-clean --install build com.github.tchx84.Flatseal.json flatpak --user run --branch=master com.github.tchx84.Flatseal ``` Or just use [Builder](https://flathub.org/apps/details/org.gnome.Builder) ## Contribute If you are interested in contributing to this utility just send a pull request to [this](https://github.com/tchx84/Flatseal) repo. ## Disclaimer 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](COPYING) for more details. flatseal-2.3.0/com.github.tchx84.Flatseal.json000066400000000000000000000027331467660615300211370ustar00rootroot00000000000000{ "app-id": "com.github.tchx84.Flatseal", "runtime": "org.gnome.Platform", "runtime-version": "47", "sdk": "org.gnome.Sdk", "separate-locales": false, "command": "com.github.tchx84.Flatseal", "finish-args": [ "--share=ipc", "--socket=fallback-x11", "--socket=wayland", "--device=dri", "--filesystem=/var/lib/flatpak/app:ro", "--filesystem=xdg-data/flatpak/app:ro", "--filesystem=xdg-data/flatpak/overrides:create", "--talk-name=org.gnome.Software", "--talk-name=org.freedesktop.impl.portal.PermissionStore" ], "cleanup": [ "/include", "/lib/pkgconfig", "/man", "/share/doc", "/share/gtk-doc", "/share/man", "/share/pkgconfig", "*.la", "*.a" ], "modules": [ { "name": "jasmine-gjs", "buildsystem": "meson", "cleanup": ["*"], "sources": [ { "type": "git", "url": "https://github.com/ptomato/jasmine-gjs.git", "commit": "f6a42dbdbf4d0790358cd17aac09b2d66a22c38c" } ] }, { "name": "flatseal", "buildsystem": "meson", "sources": [ { "type": "git", "path": ".", "branch": "HEAD" } ] } ] } flatseal-2.3.0/data/000077500000000000000000000000001467660615300142365ustar00rootroot00000000000000flatseal-2.3.0/data/com.github.tchx84.Flatseal.appdata.xml.in000066400000000000000000000036441467660615300237170ustar00rootroot00000000000000 Flatseal com.github.tchx84.Flatseal com.github.tchx84.Flatseal.desktop CC0-1.0 GPL-3.0-or-later Manage Flatpak permissions

Flatseal is a graphical utility to review and modify permissions from your Flatpak applications.

The Flatseal main window https://raw.githubusercontent.com/tchx84/flatseal/master/screenshots/en/1.png Flatseal showing filesystem permissions https://raw.githubusercontent.com/tchx84/flatseal/master/screenshots/en/2.png Flatseal showing global overrides https://raw.githubusercontent.com/tchx84/flatseal/master/screenshots/en/3.png martin.abente.lahaye@gmail.com Martin Abente Lahaye Martin Abente Lahaye https://github.com/tchx84/flatseal https://github.com/tchx84/flatseal/issues mobile #9af0cf #0c8d5c
flatseal-2.3.0/data/com.github.tchx84.Flatseal.desktop.in000066400000000000000000000006651467660615300231570ustar00rootroot00000000000000[Desktop Entry] # TRANSLATORS: Don't translate this text Name=Flatseal Exec=com.github.tchx84.Flatseal Terminal=false Type=Application Categories=Utility; StartupNotify=true Comment=Manage Flatpak permissions # TRANSLATORS: Don't translate this text Icon=com.github.tchx84.Flatseal # Translators: Do NOT translate or transliterate this text (these are enum types)! X-Purism-FormFactor=Workstation;Mobile; Keywords=seal;sandbox;override; flatseal-2.3.0/data/com.github.tchx84.Flatseal.gschema.xml000066400000000000000000000010741467660615300233020ustar00rootroot00000000000000 1024 768 false "" Application ID that was last selected flatseal-2.3.0/data/icons/000077500000000000000000000000001467660615300153515ustar00rootroot00000000000000flatseal-2.3.0/data/icons/com.github.tchx84.Flatseal-symbolic.svg000066400000000000000000000015561467660615300246320ustar00rootroot00000000000000 flatseal-2.3.0/data/icons/com.github.tchx84.Flatseal.Devel.svg000066400000000000000000000225721467660615300240520ustar00rootroot00000000000000 flatseal-2.3.0/data/icons/com.github.tchx84.Flatseal.Flatpak.svg000066400000000000000000000111301467660615300243610ustar00rootroot00000000000000 image/svg+xml flatseal-2.3.0/data/icons/com.github.tchx84.Flatseal.Source.svg000066400000000000000000000473061467660615300242550ustar00rootroot00000000000000 Adwaita Icon Template image/svg+xml GNOME Design Team Adwaita Icon Template flatseal-2.3.0/data/icons/com.github.tchx84.Flatseal.svg000066400000000000000000000074631467660615300230160ustar00rootroot00000000000000 flatseal-2.3.0/data/icons/meson.build000066400000000000000000000006261467660615300175170ustar00rootroot00000000000000install_data('com.github.tchx84.Flatseal.svg', install_dir: join_paths(get_option('datadir'), 'icons/hicolor/scalable/apps') ) install_data('com.github.tchx84.Flatseal-symbolic.svg', install_dir: join_paths(get_option('datadir'), 'icons/hicolor/symbolic/apps') ) install_data('com.github.tchx84.Flatseal.Flatpak.svg', install_dir: join_paths(get_option('datadir'), 'icons/hicolor/scalable/apps') ) flatseal-2.3.0/data/meson.build000066400000000000000000000023421467660615300164010ustar00rootroot00000000000000desktop_file = i18n.merge_file( input: 'com.github.tchx84.Flatseal.desktop.in', output: 'com.github.tchx84.Flatseal.desktop', type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'applications') ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file] ) endif appstream_file = i18n.merge_file( input: 'com.github.tchx84.Flatseal.appdata.xml.in', output: 'com.github.tchx84.Flatseal.appdata.xml', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'appdata') ) appstreamcli = find_program('appstreamcli', required: false) if appstreamcli.found() test('Validate appstream file', appstreamcli, args: ['validate', '--no-net', '--explain', appstream_file] ) endif install_data( 'com.github.tchx84.Flatseal.gschema.xml', install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas') ) compile_schemas = find_program('glib-compile-schemas', required: false) if compile_schemas.found() test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) endif subdir('icons') flatseal-2.3.0/help/000077500000000000000000000000001467660615300142555ustar00rootroot00000000000000flatseal-2.3.0/help/C/000077500000000000000000000000001467660615300144375ustar00rootroot00000000000000flatseal-2.3.0/help/C/index.html000066400000000000000000000763241467660615300164500ustar00rootroot00000000000000 -

Documentation

Table of contents

Permissions

This is the list of permissions supported by Flatseal. These descriptions are based on Flatpak’s official documentation and extended with examples and references to make it easier for newcomers to understand.

To summarize it, Flatpak provides two different permissions models: static and dynamic

Static refers to the permissions set by the developers when applications are built. Static permissions are holes in the sandbox, e.g. an application built with --filesystem=home can access all user personal files. The benefit of this model is that developers can support Flatpak without any change in their applications code.

Both Flatseal and flatpak override command-line tool, use the overrides backend to manage static permissions.

Dynamic refers to the permissions granted by the users when applications run. Dynamic permissions rely on resource providers called Portals and can require user confirmation, e.g. users can grant access to one specific file thanks to the org.freedesktop.portal.FileChooser portal. The benefit of this model is that users don’t need to trust applications with more resources than is strictly needed.

Both Flatseal and flatpak permissions command-line tool, use the org.freedesktop.impl.portal.PermissionStore service to manage dynamic permissions.

Share

Name Type Description flatpak override equivalent
Network Toggle Allow the application to have access to the network.

For example, if it’s disabled for Firefox, it will no longer be possible to browse the internet with this application.
--share=network and --unshare=network
Inter-process communications Toggle Share IPC namespace with the host.

This is required by X11 due to it depending on IPC.
--share=ipc and --unshare=ipc

Socket

Name Type Description flatpak override equivalent
X11 windowing system Toggle Allow the application to open in an X11 window.

Most applications use X11 for historical reasons, but is considered less secure.
--socket=x11 and --nosocket=x11
Wayland windowing system Toggle Allow the application to open in a Wayland window.

Many applications do not use Wayland as it is a newer display protocol unlike X11, and is considered more secure, but either some applications require extra steps to use it (see environment variables example for Firefox), or do not support Wayland at all.
--socket=wayland and --nosocket=wayland
Fallback to X11 windowing system Toggle Allow the application to open in an X11 window when Wayland is not available. This overrides the X11 windowing system option when enabled. --socket=fallback-x11 and --nosocket=fallback-x11
PulseAudio sound server Toggle Allow the application to play sounds or get access to the microphone when using PulseAudio.

For example, if it’s disabled for Rhythmbox, it will no longer be possible to listen to the music with this application.
--socket=pulseaudio and --nosocket=pulseaudio
D-Bus session bus Toggle Allow the application to have access to the entire session bus. --socket=session-dbus and --nosocket=session-dbus
D-Bus system bus Toggle Allow the application to have access to the entire system bus. --socket=system-dbus and --nosocket=system-dbus
Secure Shell agent Toggle Allow the application to use SSH authentications. --socket=ssh-auth and --nosocket=ssh-auth
Smart cards Toggle Allow the application to use smart cards. --socket=pcsc and --nosocket=pcsc
Printing system Toggle Allow the application to use printing systems.

For example, if it’s disabled for LibreOffice, it will no longer be possible to print documents with this application.
--socket=cups and --nosocket=cups
GPG-Agent directories Toggle Allow the application to access GPG-Agent directories. --socket=gpg-agent and --nosocket=gpg-agent
Inherit Wayland socket Toggle Allow passing WAYLAND_SOCKET environment variable to the sandbox.

For example, if it's disabled for Fcitx5, it won't be able to connect to Wayland and display its autocompletion dialogs.
--socket=inherit-wayland-socket and --nosocket=inherit-wayland-socket

Device

Name Type Description flatpak override equivalent
GPU acceleration Toggle Allow the application to access the graphics direct rendering to take advantage of GPU acceleration. --device=dri and --nodevice=dri
Input devices Toggle Allow input device access.

Note that raw and virtual input devices could still require All devices
--device=input and --nodevice=input
Virtualization Toggle Allow the application to support virtualization. --device=kvm and --nodevice=kvm
Shared memory Toggle Allow the application to access shared memory. --device=shm and --nodevice=shm
All devices Toggle Allow the application to access all devices, such as webcam and external devices.

For example, if it’s disabled for Element, it will no longer be possible to do video calls with this application.
--device=all and --nodevice=all

Allow

Name Type Description flatpak override equivalent
Development syscalls Toggle Allow the application to access to certain syscalls, such as ptrace() and perf_event_open(). --allow=devel and --disallow=devel
Programs from other architectures Toggle Allow the application to execute programs for an ABI other than the one supported natively by the system. --allow=multiarch and --disallow=multiarch
Bluetooth Toggle Allow the application to use Bluetooth. --allow=bluetooth and --disallow=bluetooth
Controller Area Network bus Toggle Allow the application to use canbus sockets. You must also have network access for this to work. --allow=canbus and --disallow=canbus
Application Shared Memory Toggle Allow the application to share its /dev/shm between instances of the same $FLATPAK_APP_ID. Introduced specifically for the Steam flatpak, to share its /dev/shm with sub-sandboxed games. --allow=per-app-dev-shm and --disallow=per-app-dev-shm

Filesystem

Name Type Description flatpak override equivalent
All filesystem files Toggle Allow read-write access to the whole filesystem. Everything that isn’t writeable by the user will be read-only --filesystem=host and --nofilesystem=host
All system libraries, executables and static data Toggle Allow read-write access to system libraries located in /usr. Since this directory requires root access to write, the permission will be read-only. --filesystem=host-os and --nofilesystem=host-os
All system configurations Toggle Allow read-write access to system configurations located in /etc. Since this directory requires root access to write, the permission will be read-only. --filesystem=host-etc and --nofilesystem=host-etc
All user files Toggle Allow read-write access to the user directory ($HOME or ~/). --filesystem=home and --nofilesystem=home
Other files Input Allow read-write access to the directory you desire.

For example, you would put ~/games if you want read-write access to ~/games. If you want read-only access to ~/games, then you would put ~/games:ro.
--filesystem=[PATH], --filesystem=[PATH]:ro and --nofilesystem=[PATH]

Persistent

Name Type Description flatpak-override equivalent
Files Input Allow the application to access the targeted directory while restricting other applications from accessing it.

Starting from the user directory ($HOME or ~/), the targeted directory will be remapped to the application’s directory (~/.var/app/$FLATPAK_APP_ID/[PATH]) if it has no write access to the targeted directory.

For example, persisting .mozilla will map ~/.mozilla to ~/.var/app/org.mozilla.Firefox/.mozilla.

This is also a technique used to declutter the user directory, as it prevents the application from writing to ~/.
--persist=[PATH]

Environment

Name Type Description flatpak override equivalent
Variables Input Set an environment variable in the application to make the variable available to application when it runs.

For example, adding MOZ_ENABLE_WAYLAND=1 for Firefox to enable the Wayland back-end.
--env=[VAR]=[VALUE]

System Bus

Name Type Description flatpak override equivalent
Talks Input Allow the application to talk to system services.

For example, adding org.freedesktop.Accounts will allow the application to access users login history.
--system-talk-name=[NAME]
Owns Input Allow the application to own system services under the given name. --system-own-name=[NAME]

Session Bus

Name Type Description flatpak override equivalent
Talks Input Allow the application to talk to session services.

For example, adding org.freedesktop.Notifications will allow the application to send notifications.
--talk-name=[NAME]
Owns Input Allow the application to own session services under the given name. --own-name=[NAME]

Portals

Name Type Description Portal
Background Toggle Allow the application to run in the background. org.freedesktop.portal.Background
Notifications Toggle Allow the application to send notifications. org.freedesktop.portal.Notification
Microphone Toggle Allow the application to listen to your microphone. org.freedesktop.portal.Device
Speakers Toggle Allow the application to play sounds to your speakers. org.freedesktop.portal.Device
Camera Toggle Allow the application to record videos with your camera. org.freedesktop.portal.Device
Location Toggle Allow the application to access your location data. org.freedesktop.portal.Location

Tips and Tricks

Manually reset Flatseal permissions

If permissions are removed and is no longer possible to reset, run the following command from the terminal and re-start Flatseal:

$ rm ~/.local/share/flatpak/overrides/com.github.tchx84.Flatseal

Add new translations

Add a new language and update translations:

$ git clone https://github.com/tchx84/Flatseal.git
$ cd Flatseal
$ echo "es" >> po/LINGUAS # es for Spanish
$ meson _translate && cd _translate
$ ninja flatseal-pot
$ ninja flatseal-update-po
$ gedit ../po/es.po # translate the strings to Spanish

To test the translation language:

$ flatpak config --set languages es
$ flatpak update org.gnome.Platform
$ LC_ALL=es_PY.UTF-8 flatpak run com.github.tchx84.Flatseal

Enable custom installations

To enable a custom installation, e.g, /xusr/custom/flatpak.

Flatpak 1.7.1 or newer

  1. Launch Flatseal and select it to edit its own permissions.
  2. Enable host-etc, or type in host-etc:ro in the other option.
  3. Type in the custom installation path, e.g, /xusr/custom/flatpak:ro.
  4. Restart Flatseal.

All versions

  1. Launch Flatseal and select it to edit its own permissions.
  2. Enable host, or type in host:ro in the other option.
  3. Restart Flatseal.

NOTE: To find these installations, Flatseal needs access to /etc/flatpak/installations.d. Before Flatpak 1.7.1, accessing the host /etc required the host permission, which was an all-or-nothing situation. By default, Flatseal will have minimal permissions, so it’s up to the user to decide to enable this feature.

Use custom FLATPAK_USER_DIR

To use a custom FLATPAK_USER_DIR, e.g. /var/home/user/.flatpak.

flatpak --user override --filesystem=/var/home/user/.flatpak --env=FLATPAK_USER_DIR=/var/home/user/.flatpak com.github.tchx84.Flatseal

NOTE: By default, FLATPAK_USER_DIR is not accessible from within the Flatpak sandbox, and Flatseal has no access to custom directories. Therefore, these overrides are needed.

flatseal-2.3.0/help/meson.build000066400000000000000000000001721467660615300164170ustar00rootroot00000000000000docs = [ 'C/index.html', ] install_data(docs, install_dir: join_paths(get_option('datadir'), 'help', 'C', 'flatseal')) flatseal-2.3.0/meson.build000066400000000000000000000005511467660615300154700ustar00rootroot00000000000000project('flatseal', version: '2.3.0', meson_version: '>= 0.59.0', default_options: [ 'warning_level=2', ], ) i18n = import('i18n') subdir('data') subdir('src') subdir('po') subdir('tests') subdir('help') gnome.post_install( gtk_update_icon_cache: true, glib_compile_schemas: true, update_desktop_database: true, ) flatseal-2.3.0/po/000077500000000000000000000000001467660615300137435ustar00rootroot00000000000000flatseal-2.3.0/po/LINGUAS000066400000000000000000000001161467660615300147660ustar00rootroot00000000000000bg_BG cs da de es el he hi hu id it nb nl pt_BR sv pl ru ca tr fr zh_CN ta uk flatseal-2.3.0/po/POTFILES000066400000000000000000000026121467660615300151140ustar00rootroot00000000000000data/com.github.tchx84.Flatseal.desktop.in data/com.github.tchx84.Flatseal.appdata.xml.in data/com.github.tchx84.Flatseal.gschema.xml src/application.js src/main.js src/models/applications.js src/models/sessionBus.js src/models/systemBus.js src/models/devices.js src/models/features.js src/models/filesystems.js src/models/filesystemsOther.js src/models/info.js src/models/permissions.js src/models/persistent.js src/models/portals.js src/models/shared.js src/models/sockets.js src/models/unsupported.js src/models/variables.js src/widgets/aboutDialog.js src/widgets/aboutDialog.ui src/widgets/appInfoViewer.js src/widgets/appInfoViewer.ui src/widgets/applicationRow.js src/widgets/applicationRow.ui src/widgets/busNameRow.js src/widgets/busNameRow.ui src/widgets/detailsButton.js src/widgets/globalRow.ui src/widgets/globalInfoViewer.ui src/widgets/menu.ui src/widgets/overrideStatusIcon.js src/widgets/pathRow.js src/widgets/pathRow.ui src/widgets/pathsViewer.js src/widgets/pathsViewer.ui src/widgets/permissionEntryRow.js src/widgets/permissionEntryRow.ui src/widgets/permissionPortalRow.js src/widgets/permissionPortalRow.ui src/widgets/permissionSwitchRow.js src/widgets/permissionSwitchRow.ui src/widgets/relativePathRow.js src/widgets/relativePathRow.ui src/widgets/resetButton.js src/widgets/shortcutsWindow.ui src/widgets/variableRow.js src/widgets/variableRow.ui src/widgets/window.js src/widgets/window.ui flatseal-2.3.0/po/bg_BG.po000066400000000000000000000441601467660615300152500ustar00rootroot00000000000000# Flatseal - Bulgarian Translation # Copyright (C) 2022-2024 # This file is distributed under the same license as the flatseal package. # Georgi Georgiev (RacerBG) , 2022, 2023, 2024 # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-01-19 13:23+0200\n" "Last-Translator: Georgi Georgiev (RacerBG) \n" "Language-Team: \n" "Language: bg_BG\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 3.4\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Управление на разрешениÑта за Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "seal;sandbox;override;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal е графична програма за преглед и промÑна на разрешениÑта за вашите " "Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Flatpak." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "ОÑновен прозорец" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Ð Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð° файловата ÑиÑтема" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "СиÑтемни промени" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "ПоÑледно избран идентификатор на приложението" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "ÐеизвеÑтно" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Комуникира" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Притежава" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "ÐÐ°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² потребителÑката шина" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "ÐÐ°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑиÑтемната шина" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Графично уÑкорение" #: src/models/devices.js:44 msgid "Input devices" msgstr "Входни уÑтройÑтва" #: src/models/devices.js:51 msgid "Virtualization" msgstr "ВиртуализациÑ" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Споделена памет" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Ð’Ñички уÑтройÑтва (например уеб камера)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "УÑтройÑтва във виртуалната Ñреда" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "СиÑтемни Ñигнали (например ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Програми от други архитектури" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Шина CAN" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Споделена памет" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Функции за приложението" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Ð’Ñички ÑиÑтемни файлове" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Ð’Ñички ÑиÑтемни библиотеки, изпълними файлове и Ñтатични данни" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Ð’Ñички ÑиÑтемни конфигурации" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Ð’Ñички потребителÑки файлове" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Подгрупи на файловата ÑиÑтема за приложението" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Други файлове" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "например ~/games:ro, xdg-pictures и други" #: src/models/persistent.js:37 msgid "Files" msgstr "Файлове" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "например .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Създадени в домашната папка меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²ÑŠÐ² виртуалната Ñреда" #: src/models/portals.js:118 msgid "Background" msgstr "Фонов режим" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Фоново изпълнение" #: src/models/portals.js:128 msgid "Notifications" msgstr "ИзвеÑтиÑ" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Изпращане на извеÑтиÑ" #: src/models/portals.js:138 msgid "Microphone" msgstr "Микрофон" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Използване на микрофона" #: src/models/portals.js:148 msgid "Speakers" msgstr "Тонколони" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Използване на тонколоните" #: src/models/portals.js:158 msgid "Camera" msgstr "Камера" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "ЗапиÑване на видео Ñ ÐºÐ°Ð¼ÐµÑ€Ð°Ñ‚Ð°" #: src/models/portals.js:168 msgid "Location" msgstr "ЛокациÑ" #: src/models/portals.js:170 msgid "Can access your location" msgstr "ДоÑтъп до локациÑта" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "ДоÑтъпни реÑурÑи за приложението" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Ðе Ñе поддържа от инÑталираната верÑÐ¸Ñ Ð½Ð° Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "ИзиÑква разрешение за Ñъхранение Ñ Ð²ÐµÑ€ÑÐ¸Ñ â‰¥2" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Данните за порталите не Ñа готови" #: src/models/shared.js:39 msgid "Network" msgstr "Мрежа" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "ÐšÐ¾Ð¼ÑƒÐ½Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ процеÑите" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Споделени подгрупи ÑÑŠÑ ÑиÑтемата домакин" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "Графична ÑиÑтема X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Графична ÑиÑтема Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Резервна графична ÑиÑтема X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Звуков Ñървър PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "ПотребителÑка шина D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "СиÑтемна шина D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Ðгент SSH" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Смарткарти" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Принтиране" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Папките на агент GPG" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "ИзвеÑтни гнезда във виртуалната Ñреда" #: src/models/variables.js:40 msgid "Variables" msgstr "Променливи" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "например GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "ЕкÑпортирани променливи към приложението" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %B, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "ВерÑиÑ" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "ПоÑледно обновÑване" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Платформа" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Това не е правилно" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_СвойÑтва" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Покажи приложението в ÑÐ¾Ñ„Ñ‚ÑƒÐµÑ€Ð½Ð¸Ñ Ð¼ÐµÐ½Ð¸Ð´Ð¶ÑŠÑ€" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "СофтуерниÑÑ‚ мениджър не е намерен" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Ð’Ñички приложениÑ" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Промени, които Ñе отнаÑÑÑ‚ за вÑички Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "ВерÑÐ¸Ñ Ð½Ð° Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "ВерÑÐ¸Ñ Ð½Ð° портала" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "ÐŸÑ€Ð¾Ð¼ÐµÐ½Ñ Ð¼ÐµÑтоположението" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Помощ" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_ДокументациÑ" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Клавишни комбинации" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_ОтноÑно Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Променено от ÑиÑтемата" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Променено от потребителÑ" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "абÑолютното меÑтоположение" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "меÑтоположението ÑпрÑмо домашната папка" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "вÑички ÑиÑтемни конфигурации" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "вÑички ÑиÑтемни библиотеки, изпълними файлове и Ñтатични данни" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "вÑички ÑиÑтемни файлове" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "вÑички потребителÑки файлове" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "папката Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ñ Ð¿Ð»Ð¾Ñ‚" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "папката Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð¸" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "папката Ñ Ð¸Ð·Ñ‚ÐµÐ³Ð»ÑниÑ" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "папката Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ°" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "папката Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½Ð¸" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "публичната папка" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "папката Ñ Ð²Ð¸Ð´ÐµÐ¾Ð·Ð°Ð¿Ð¸Ñи" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "папката Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "папката Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "папката Ñ ÐºÐµÑˆ паметта" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "папката Ñ Ð´Ð°Ð½Ð½Ð¸" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "папката на платформата" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Право на четене: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Право на запиÑване и четене: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Право на Ñъздаване, запиÑване и четене: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Без право на четене: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Без право на запиÑване и четене: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Без право на Ñъздаване, запиÑване и четене: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Отхвърли" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Пътищата по подразбиране не може да Ñе премахнат" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Ðулирай" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Ðе Ñа направени промени по приложението" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Ðулирай разрешениÑта за приложението" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", включително промените, които не Ñа направени Ñ Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Общи" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Покажи мнемониките" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Покажи документациÑта" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Покажи менюто" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Клавишни комбинации" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Изход" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "ÐавигациÑ" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "ПремеÑти налÑво" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "ПремеÑти нагоре" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "ПремеÑти надÑÑно" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "ПремеÑти надолу" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "ПриложениÑ" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Ðамери" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "РазрешениÑ" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Превключи" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "ДокументациÑ" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Ðамери Ñледващ" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Ðамери предишен" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "РазрешениÑта Ñа нулирани" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Отмени" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Промените не могат да Ñе заредÑÑ‚ поради неправилно Ñъдържание" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "ОпреÑнено поради промени в инÑталациите на Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "ОÑновно меню" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "ПриложениÑта не Ñа намерени." flatseal-2.3.0/po/ca.po000066400000000000000000000377161467660615300147040ustar00rootroot00000000000000# Catalan translation for Flatseal. # Copyright (C) 2021 # This file is distributed under the same license as the flatseal package. # Ãcar Nin Solana , 2021. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2022-10-03 23:31+0200\n" "Last-Translator: Ãcar N. S. \n" "Language-Team: \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" "X-Generator: Poedit 3.1.1\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Gestiona els permisos de Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 #, fuzzy msgid "seal;sandbox;override;" msgstr "segell;entorn protegit;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal és una utilitat gràfica per revisar i modificar els permisos de les " "vostres aplicacions Flatpak." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Identificador de l'aplicació que es va seleccionar per darrera vegada" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Desconegut" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Talks" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Owns" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Llista de noms coneguts del bus de sessió" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Llista de noms coneguts del bus del sistema" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Acceleració per la GPU" #: src/models/devices.js:44 msgid "Input devices" msgstr "Dispositius d'entrada" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualització" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Memòria compartida" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Tots els dispositius (p. ex. la càmera web)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Llista de dispositius disponibles a l'entorn de proves" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Crides del sistema pel desenvolupament (p. ex. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programes d'altres arquitectures" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Bus de xarxa de l'àrea del controlador" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Memòria compartida per aplicació" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Llista de característiques disponibles per a l'aplicació" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Tots els fitxers del sistema" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Totes les biblioteques del sistema, executables i dades estàtiques" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Totes les configuracions del sistema" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Tots els fitxers d'usuari" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "" "Llista de subconjunts de sistema de fitxers disponibles per a l'aplicació" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Altres fitxers" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "p. ex. ~/jocs:ro, xdg-pictures, etc" #: src/models/persistent.js:37 msgid "Files" msgstr "Fitxers" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "p. ex. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "" "Llista de camins relatius a la carpeta d'usuari creats a l'espai aïllat" #: src/models/portals.js:118 msgid "Background" msgstr "Fons" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Es pot executar en segon pla" #: src/models/portals.js:128 msgid "Notifications" msgstr "Notificacions" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Pot enviar notificacions" #: src/models/portals.js:138 msgid "Microphone" msgstr "Micròfon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Pots escoltar el micròfon" #: src/models/portals.js:148 msgid "Speakers" msgstr "Altaveus" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Pot reproduir sons als teus altaveus" #: src/models/portals.js:158 msgid "Camera" msgstr "Càmera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Pot enregistrar vídeos amb la càmera" #: src/models/portals.js:168 msgid "Location" msgstr "Ubicació" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Pots accedir a la teva ubicació" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Llista de recursos assignats selectivament a l'aplicació" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "No està suportat per la versió instal·lada de Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Requereix permís per emmagatzemar la versió 2 o posterior" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Encara no s'han configurat les dades del portal" #: src/models/shared.js:39 msgid "Network" msgstr "Xarxa" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Comunicacions entre processos" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Llista de subsistemes compartits amb el sistema amfitrió" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "Sistema de finestres X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Sistema de finestres del Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Reverteix al sistema de finestres X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Servidor de so PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "Bus de sessió D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Bus del sistema D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Agent d'intèrpret d'ordres segur" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Targetes intel·ligents" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Sistema d'impressió" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Directoris de l'agent GPG" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Llista de sòcols coneguts disponibles a l'entorn aïllat" #: src/models/variables.js:40 msgid "Variables" msgstr "Variables" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "p. ex. GTKDEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Llista de variables exportades a l'aplicació" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %B, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Versió" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Darrera actualització" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Entorn d'execució" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Aquesta opció no és vàlida" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Mostra els detalls" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Mostra l'aplicació en un gestor de programari" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "No s'ha trobat cap gestor de programari" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Totes les Aplicacions" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Canvis que s'apliquen a totes les aplicacions de Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Versió Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Versió del Portal" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Canvis de camí" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Ajuda" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Documentació" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "Dreceres de _teclat" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "Quant al _Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Canviat globalment" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Modificat per l'usuari" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "aquest camí absolut" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "aquest camí relatiu al directori de l'usuari" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "totes les configuracions del sistema" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "totes les biblioteques del sistema, executables i dades estàtiques" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "tots els fitxers del sistema" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "tots els fitxers d'usuari" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "el directori d'escriptori" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "el directori de documents" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "el directori de baixada" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "el directori de música" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "el directori d'imatges" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "el directori públic" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "el directori dels vídeos" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "el directori de les plantilles" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "el directori de configuració" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "el directori de la memòria cau" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "el directori de dades" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "el directori de l'entorn d'execució" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Es pot llegir: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Pot modificar i llegir: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Pot crear, modificar i llegir: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "No es pot llegir: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "No es pot modificar o llegir: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "No es pot crear, modificar o llegir: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "No definit" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "No es poden eliminar els camins per defecte" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Reinicia" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "No s'ha fet cap canvi a aquesta aplicació" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Restableix els permisos de l'aplicació" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", inclosos els canvis no fets amb el Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "General" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Mostra mnemotècniques" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Mostra la documentació" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Mostra el menú" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Dreceres de teclat" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Sortir" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navegació" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Mou-te a l'esquerra" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Mou-te" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Mou a la dreta" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Moure cap avall" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Aplicacions" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Troba" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Permisos" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Commuta" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Documentació" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Busca el següent resultat" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Troba el resultat anterior" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "S'han restablert els permisos" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Desfés" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "No es poden carregar els canvis a causa d'un contingut incorrecte" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Actualitzat a causa dels canvis a les instal·lacions de Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Menú principal" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "No s'ha trobat cap aplicació." flatseal-2.3.0/po/cs.po000066400000000000000000000376051467660615300147230ustar00rootroot00000000000000# Czech translation for flatseal package. # Copyright (C) 2020 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # # Daniel Rusek , 2020. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-19 13:18+0200\n" "Last-Translator: Daniel Rusek \n" "Language-Team: none\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" "X-Generator: Poedit 3.5\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Spravujte oprávnÄ›ní pro Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "utÄ›snÄ›ní;sandbox;zmÄ›na;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal je grafický nástroj pro prohlížení a úpravu oprávnÄ›ní vaÅ¡ich " "Flatpak aplikací." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Hlavní okno Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal zobrazující oprávnÄ›ní souborového systému" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal zobrazující globální zmÄ›ny" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "ID aplikace, které bylo naposledy vybráno" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "neznámé" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Komunikuje" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Vlastní" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Seznam dobÅ™e známých jmen dostupných na sbÄ›rnici sezení" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Seznam dobÅ™e známých jmen dostupných na systémové sbÄ›rnici" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Akcelerace GPU" #: src/models/devices.js:44 msgid "Input devices" msgstr "Vstupní zařízení" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualizace" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Sdílená paměť" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "VÅ¡echna zařízení (napÅ™. webkamera)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Seznam zařízení dostupných v sandboxu" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Vývojová systémová volání (napÅ™. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programy z jiných architektur" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "SbÄ›rnice Controller Area Network" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Sdílená paměť aplikace" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Seznam funkcí dostupných v sandboxu" #: src/models/filesystems.js:37 msgid "All system files" msgstr "VÅ¡echny systémové soubory" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "VÅ¡echny systémové knihovny, spustitelné soubory a statická data" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "VÅ¡echna systémová nastavení" #: src/models/filesystems.js:58 msgid "All user files" msgstr "VÅ¡echny uživatelské soubory" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Seznam podmnožin souborového systému dostupných pro aplikaci" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Ostatní soubory" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "napÅ™. ~/hry:ro, xdg-pictures atd." #: src/models/persistent.js:37 msgid "Files" msgstr "Soubory" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "napÅ™. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Seznam cest relativních k domovskému adresáři vytvoÅ™ených v sandboxu" #: src/models/portals.js:118 msgid "Background" msgstr "Pozadí" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Může běžet na pozadí" #: src/models/portals.js:128 msgid "Notifications" msgstr "UpozornÄ›ní" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Může zasílat upozornÄ›ní" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Může poslouchat váš mikrofon" #: src/models/portals.js:148 msgid "Speakers" msgstr "Reproduktory" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Může pÅ™ehrávat zvuk na vaÅ¡ich reproduktorech" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Může nahrávat videa vaší kamerou" #: src/models/portals.js:168 msgid "Location" msgstr "Poloha" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Může pÅ™istupovat k vaší poloze" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Seznam prostÅ™edků selektivnÄ› pÅ™idÄ›lených aplikaci" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Není podporováno nainstalovanou verzí Flatpaku" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Vyžaduje úložiÅ¡tÄ› oprávnÄ›ní verze 2 nebo novÄ›jší" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Data portálu dosud nebyla nastavena" #: src/models/shared.js:39 msgid "Network" msgstr "Síť" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Meziprocesová komunikace" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Seznam subsystémů sdílených s hostitelským systémem" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "Okenní systém X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Okenní systém Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Záložní přístup k okennímu systému X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Zvukový server PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "SbÄ›rnice sezení D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Systémová sbÄ›rnice D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Agent ZabezpeÄeného Shellu" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "ÄŒipové karty" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Tiskový systém" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Adresáře GPG-Agent" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "ZdÄ›dit soket Waylandu" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Seznam dobÅ™e známých soketů dostupných v sandboxu" #: src/models/variables.js:40 msgid "Variables" msgstr "PromÄ›nné" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "napÅ™. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Seznam promÄ›nných exportovaných aplikaci" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e. %B %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Verze" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Aktualizováno" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "ProstÅ™edí" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Toto není platná možnost" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "Zobrazit podrobno_sti" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Zobrazit aplikaci ve správci softwaru" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Nebyl nalezen žádný správce softwaru" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "VÅ¡echny aplikace" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "ZmÄ›ny, které jsou platné pro vÅ¡echny Flatpak aplikace" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Verze Flatpaku" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Verze portálu" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "ZmÄ›ní cestu" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_NápovÄ›da" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Dokumentace" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "O _aplikaci Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "ZmÄ›nÄ›no globálnÄ›" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "ZmÄ›nÄ›no uživatelem" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "tato absolutní cesta" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "tato cesta relativní k domovskému adresáři" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "vÅ¡echna systémová nastavení" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "vÅ¡echny systémové knihovny, spustitelné soubory a statická data" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "vÅ¡echny systémové soubory" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "vÅ¡echny uživatelské soubory" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "adresář plochy" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "adresář dokumentů" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "adresář stahování" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "adresář hudby" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "adresář obrázků" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "veÅ™ejný adresář" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "adresář videí" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "adresář Å¡ablon" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "konfiguraÄní adresář" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "adresář mezipamÄ›ti" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "datový adresář" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "adresář prostÅ™edí" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Může Äíst: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Může upravovat a Äíst: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Může vytvářet, upravovat a Äíst: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Nemůže Äíst: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Nemůže upravovat a Äíst: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Nemůže vytvářet, upravovat a Äíst: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Uvolnit" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Výchozí cesty nemohou být odstranÄ›ny" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Resetovat" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "V této aplikaci nebyly provedeny žádné zmÄ›ny" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Resetovat oprávnÄ›ní této aplikace" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", vÄetnÄ› zmÄ›n neprovedených v aplikaci Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Obecné" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Zobrazit pomůcky" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Zobrazit dokumentaci" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Zobrazit menu" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Klávesové zkratky" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "UkonÄit" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigace" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Posunout doleva" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Posunout nahoru" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Posunout doprava" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Posunout dolů" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Aplikace" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Najít" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "OprávnÄ›ní" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "PÅ™epnout" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Dokumentace" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Najít další" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Najít pÅ™edchozí" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "OprávnÄ›ní byla resetována" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_ZpÄ›t" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Nelze naÄíst zmÄ›ny kvůli nesprávnému obsahu" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Aktualizováno kvůli zmÄ›nám v instalacích Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Hlavní nabídka" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Nenalezeny žádné aplikace." flatseal-2.3.0/po/da.po000066400000000000000000000365231467660615300147000ustar00rootroot00000000000000# Danish translation of Flatseal. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # ExponentActivity ***@***.***, 2022. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2022-03-24 13:19+0100\n" "Last-Translator: ExponentActivity\n" "Language-Team: \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" "X-Generator: Poedit 3.0.1\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Administrer Flatpak tilladelser" #: data/com.github.tchx84.Flatseal.desktop.in:15 #, fuzzy msgid "seal;sandbox;override;" msgstr "seal;sandbox;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal er et grafisk værktøj til at gennemse og ændre tilladelser for dine " "Flatpak applikationer." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Applikations-id, der sidst blev valgt" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Ukendt" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Taler" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Ejer" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Liste af velkendte navne pÃ¥ sessionsbussen" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Liste af velkendte navne pÃ¥ sessionsbussen" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU-accelerering" #: src/models/devices.js:44 msgid "Input devices" msgstr "Input-enheder" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualisering" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Delt hukommelse" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Alle enheder (f.eks. webcam)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Liste af enheder tilgængelige i sandkassen" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Udviklingssyscalls (f.eks. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programmer fra andre arkitekture" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Controller Area Network bus" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Applikationsspecifikt Delt Hukkommelse" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Liste af funktioner tilgængelige for applikationen" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Alle system filer" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Alle systembiblioteker, eksekverbare filer og statisk data" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Alle system konfigurationer" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Alle bruger filer" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Liste af filsystem undergrupper tilgængelige for applikationen" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Andre filer" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "f.eks. ~/games:ro, xdg-pictures, etc" #: src/models/persistent.js:37 msgid "Files" msgstr "Filer" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "f.eks. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "" "Liste af stier, der relativt til hjemmemappen, bliver oprettet i sandkassen" #: src/models/portals.js:118 msgid "Background" msgstr "Baggrund" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "MÃ¥ køre i baggrunden" #: src/models/portals.js:128 msgid "Notifications" msgstr "Notifikationer" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "MÃ¥ sende notifikationer" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "MÃ¥ lytte til din mikrofon" #: src/models/portals.js:148 msgid "Speakers" msgstr "Højttaler" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "MÃ¥ afspille lyde pÃ¥ dine højttalere" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "MÃ¥ optage fra dit kamera" #: src/models/portals.js:168 msgid "Location" msgstr "Placering" #: src/models/portals.js:170 msgid "Can access your location" msgstr "MÃ¥ tilgÃ¥ din placering" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Liste af ressourcer applikationen har fÃ¥et adgang til" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Ikke understøttet af den installerede version af Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Kræver permission store version 2 eller nyere" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Portal data er ikke blevet sat op" #: src/models/shared.js:39 msgid "Network" msgstr "Netværk" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Inter-process kommunikation" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Liste af undersystemer delt med værtssystemet" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11 vinduessystem" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland vinduessystem" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Fald tilbage pÃ¥ X11 vinduessystem" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio lydserver" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus sessionsbus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus systembus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Sikker Skal agent" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Smart cards" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Printsystem" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-agent biblioteker" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Liste af velkendte fatninger tilgængelige for sandkassen" #: src/models/variables.js:40 msgid "Variables" msgstr "Variabler" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "f.eks. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Liste af variabler eksporteret til applikationen" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e. %B %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Version" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Sidst Opdateret" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Eksekveringsmiljø" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Dette er ikke en gyldig mulighed" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Vis detaljer" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Vis applikation i en software manager" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Ingen software manager blev fundet" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Alle Applikationer" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Ændringer, der gælder for alle Flatpak-applikationer" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak version" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Portal version" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Ændrer sti" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Hjælp" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Dokumentation" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Tastatur Genveje" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_Om Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Ændret globalt" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Ændret af brugeren" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "denne absolutte sti" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "denne sti relativt til din hjemmemappe" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "alle system konfigurationer" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "alle systembiblioteker, eksekverbare filer og statisk data" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "alle system filer" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "alle bruger filer" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "skrivebord mappen" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "dokumenter mappen" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "download mappen" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "musik mappen" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "billeder mappen" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "offentligt mappen" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "video mappen" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "skabelon mappen" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "konfiguration mappen" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "cache mappen" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "data mappen" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "eksekveringsmiljø mappen" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "MÃ¥ læse: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "MÃ¥ ændre og læse: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "MÃ¥ skabe, ændre og læse: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "MÃ¥ ikke læse: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "MÃ¥ ikke ændre eller læse: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "MÃ¥ ikke skabe, ændre og læse: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Uindstillet" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Standardstier kan ikke fjernes" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Nulstil" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Ingen ændringer lavet pÃ¥ denne applikation" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Nulstil denne applikations indstillinger" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", inklusiv ændringer der ikke er foretaget med Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Generelt" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Vis mnemonik" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Vis dokumentation" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Vis menu" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Tastatur Genveje" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Afslut" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigation" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Flyt til venstre" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Flyt op" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Flyt til højre" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Flyt ned" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Applikationer" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Find" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Tilladelser" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Tænd/sluk" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Dokumentation" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Find næste" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Find tidligere" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Tilladelser er nulstillet" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Fortryd" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Kan ikke indlæse ændringer pÃ¥ grund af forkert indhold" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Opdateret pÃ¥ grund af ændringer i Flatpak-installationer" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Hovedmenu" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Ingen applikationer fundet." flatseal-2.3.0/po/de.po000066400000000000000000000400511467660615300146730ustar00rootroot00000000000000# German translation for flatseal package. # Copyright (C) 2020 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Automatically generated, 2020. # # Tim Rieck , 2020. # Philipp Kiemle , 2022-2024. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-21 14:19+0200\n" "Last-Translator: Philipp Kiemle \n" "Language-Team: none\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 3.5\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Berechtigungen von Flatpak-Anwendungen verwalten" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "Siegel;seal;Sandkasten;sandbox;überschreiben;override;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal ist ein grafisches Dienstprogramm zum Überprüfen und Ändern von " "Basisberechtigungen Ihrer Flatpak-Anwendungen." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Das Hauptfenster von Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal zeigt Dateisystemrechte an" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal zeigt globale Überschreibungen an" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Anwendungs-ID, die zuletzt ausgewählt wurde" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Unbekannt" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Redet mit" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Besitzt" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Liste bekannter Namen im Sitzungsbus" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Liste bekannter Namen auf dem Systembus" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU-Beschleunigung" #: src/models/devices.js:44 msgid "Input devices" msgstr "Eingabegeräte" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualisierung" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Gemeinsam genutzter Speicher" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Alle Geräte (z. B. Webcam)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Liste der in der Sandbox verfügbaren Geräte" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Entwicklungs-Systemaufrufe (z. B. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programme anderer Architekturen" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Controller Area Netzwerkbus" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Gemeinsamer Speicher pro Anwendung" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Liste der Funktionen, die der Anwendung zur Verfügung stehen" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Alle Systemdateien" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Alle Systembibliotheken, ausführbaren Dateien sowie statische Daten" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Alle Systemkonfigurationen" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Alle Benutzerdateien" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Liste der für die Anwendung verfügbaren Dateisysteme" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Andere Dateien" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "z. B. ~/Spiele:ro, xdg-pictures, etc." #: src/models/persistent.js:37 msgid "Files" msgstr "Dateien" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "z. B. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Liste der in der Sandbox erstellten homedir-relativen Pfade" #: src/models/portals.js:118 msgid "Background" msgstr "Hintergrund" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Kann im Hintergrund laufen" #: src/models/portals.js:128 msgid "Notifications" msgstr "Benachrichtigungen" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Kann Benachrichtigungen senden" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Kann Ihr Mikrofon nutzen" #: src/models/portals.js:148 msgid "Speakers" msgstr "Lautsprecher" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Kann Sounds über Ihre Lautsprecher abspielen" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Kann Videos mit Ihrer Kamera aufzeichnen" #: src/models/portals.js:168 msgid "Location" msgstr "Standort" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Kann auf Ihren Standort zugreifen" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Liste der Ressourcen, die der Anwendung selektiv gewährt wurden" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Wird von der installierten Flatpak-Version nicht unterstützt" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Erfordert den Berechtigungsspeicher Version 2 oder neuer" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Portaldaten wurden noch nicht eingerichtet" #: src/models/shared.js:39 msgid "Network" msgstr "Netzwerk" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Kommunikation zwischen Prozessen" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Liste der mit dem Hostsystem gemeinsam genutzten Subsysteme" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11-Fenstermanager" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland-Fenstermanager" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Fallback auf das X11-Fenstersystem" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio-Soundserver" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus-Sitzungsbus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus-Systembus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Secure Shell Agent" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Smartcards" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Druckerverwaltung" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-Agent-Verzeichnisse" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "Wayland-Socket erben" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Liste der in der Sandbox verfügbaren Sockets" #: src/models/variables.js:40 msgid "Variables" msgstr "Variablen" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "z. B. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Liste der in die Anwendung exportierten Variablen" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e. %B %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Version" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Letzte Aktualisierung" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Runtime" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Das ist eine ungültige Einstellung" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Details anzeigen" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Anwendung in einem Software-Manager anzeigen" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Kein Software-Manager gefunden" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Alle Anwendungen" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Änderungen, die alle Flatpak-Anwendungen betreffen" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak-Version" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Portal-Version" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Ändert den Pfad" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Hilfe" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Dokumentation" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Tastaturkürzel" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "Info zu _Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Global geändert" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Durch den Benutzer geändert" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "dieser absoluter Pfad" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "dieser Pfad relativ zum persönlichen Ordner" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "alle Systemkonfigurationen" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "alle Systembibliotheken, ausführbaren Dateien sowie statische Daten" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "alle Systemdateien" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "alle Benutzerdateien" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "das Desktop-Verzeichnis" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "das Dokumenten-Verzeichnis" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "das Download-Verzeichnis" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "das Musik-Verzeichnis" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "das Bilder-Verzeichnis" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "das öffentliche Verzeichnis" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "das Video-Verzeichnis" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "das Vorlagen-Verzeichnis" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "das Konfigurationsverzeichnis" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "das Cache-Verzeichnis" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "das Datenverzeichnis" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "das Laufzeit-Verzeichnis" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Kann lesen: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Kann ändern und lesen: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Kann erstellen, ändern und lesen: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Kann nicht lesen: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Kann nicht ändern oder lesen: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Kann nicht erstellen, ändern oder lesen: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Entfernen" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Standardpfade können nicht entfernt werden" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "Z_urücksetzen" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "An dieser Anwendung wurden keine Änderungen vorgenommen" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Berechtigungen dieser Anwendung zurücksetzen" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", einschließlich Änderungen, die nicht mit Flatseal vorgenommen wurden" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Allgemein" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Mnemoniks anzeigen" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Dokumentation anzeigen" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Menü zeigen" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Tastaturkürzel" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Verlassen" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigation" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Nach links" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Nach oben" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Nach rechts" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Nach unten" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Anwendungen" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Finden" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Berechtigungen" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Umschalten" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Dokumentation" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Nächstes finden" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Vorheriges finden" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Berechtigungen wurden zurückgesetzt" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Rückgängig" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Überschreibungen können aufgrund falscher Inhalte nicht geladen werden" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Aufgrund von Änderungen in Flatpak-Installationen aktualisiert" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Menü-Taste" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Keine Anwendungen gefunden." flatseal-2.3.0/po/el.po000066400000000000000000000466241467660615300147170ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Karachalios Stagkas Athanasios Nektarios (nasos.karachalios.stagkas@proton.me) ,2024. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-04-03 13:31+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: el_GR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.4.2\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "ΔιαχείÏιση δικαιωμάτων Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "σφÏάγισε;απομόνωσε;Ï€Ïοσπέλασε;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Το Flatseal είναι ένα γÏαφικό βοηθητικό Ï€ÏόγÏαμμα για την επισκόπηση και την " "Ï„Ïοποποίηση των δικαιωμάτων από τις εφαÏμογές Flatpak που διαθέτετε." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Το κÏÏιο παÏάθυÏο του Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Το Flatseal δείχνει τα δικαιώματα του συστήματος αÏχείων" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal δείχνει παγκόσμιες Ï€Ïοσπελάσεις" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "ID εφαÏμογής που επιλέχθηκε τελευταία φοÏά" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Άγνωστο" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Επικοινωνεί" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Κατέχει" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Κατάλογος γνωστών ονομάτων στον δίαυλο συνεδÏίας" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Κατάλογος γνωστών ονομάτων στο δίαυλο συστήματος" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Επιτάχυνση ΚάÏτας ΓÏάφικων" #: src/models/devices.js:44 msgid "Input devices" msgstr "Συσκευές εισόδου" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Εικονικοποίηση" #: src/models/devices.js:58 msgid "Shared memory" msgstr "ΚοινόχÏηστη μνήμη" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Όλες οι συσκευές (Ï€.χ. κάμεÏα)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Λίστα των συσκευών που είναι διαθέσιμες στην απομόνωσή" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Αναπτυξιακές κλήσεις συστήματος (Ï€.χ. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "ΠÏογÏάμματα άλλων αÏχιτεκτονικών" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Δίαυλος ελεγκτή δικτÏου" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "ΚοινόχÏηστη μνήμη εφαÏμογής" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Κατάλογος των διαθέσιμων λειτουÏγιών της εφαÏμογής" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Όλα τα αÏχεία συστήματος" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "" "Όλες οι βιβλιοθήκες του συστήματος, τα εκτελέσιμα και τα στατικά δεδομένα" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Όλες οι διαμοÏφώσεις συστήματος" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Όλα τα αÏχεία χÏήστη" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "" "Κατάλογος των υποσυνόλων του συστήματος αÏχείων που είναι διαθέσιμα στην " "εφαÏμογή" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Άλλα αÏχεία" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "Ï€.χ. ~/games:ro, xdg-pictures, κ.λπ" #: src/models/persistent.js:37 msgid "Files" msgstr "ΑÏχεία" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "Ï€.χ. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "" "Λίστα των σχετικών με την διεÏθυνση Ï€ÏÎ¿ÏƒÏ‰Ï€Î¹ÎºÎ¿Ï ÎºÎ±Ï„Î¬Î»Î¿Î³Î¿Ï… μονοπατιών που " "δημιουÏγήθηκαν στην απομόνωση" #: src/models/portals.js:118 msgid "Background" msgstr "ΠαÏασκήνιο" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "ΜποÏεί να εκτελεστεί στο παÏασκήνιο" #: src/models/portals.js:128 msgid "Notifications" msgstr "Ειδοποιήσεις" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "ΜποÏεί να στείλει ειδοποιήσεις" #: src/models/portals.js:138 msgid "Microphone" msgstr "ΜικÏόφωνο" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "ΜποÏεί να ακοÏσει το μικÏόφωνό σας" #: src/models/portals.js:148 msgid "Speakers" msgstr "Ηχεία" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "ΜποÏεί να αναπαÏάγει ήχους στα ηχεία σας" #: src/models/portals.js:158 msgid "Camera" msgstr "ΚάμεÏα" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "ΜποÏεί να καταγÏάψει βίντεο με την κάμεÏά σας" #: src/models/portals.js:168 msgid "Location" msgstr "Τοποθεσία" #: src/models/portals.js:170 msgid "Can access your location" msgstr "ΜποÏεί να έχει Ï€Ïόσβαση στη θέση σας" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Κατάλογος των πόÏων που χοÏηγοÏνται επιλεκτικά στην εφαÏμογή" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Δεν υποστηÏίζεται από την εγκατεστημένη έκδοση του Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Απαιτεί την έκδοση 2 ή νεότεÏη του καταστήματος αδειών" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Τα δεδομένα της Ï€Ïλης δεν έχουν ακόμη δημιουÏγηθεί" #: src/models/shared.js:39 msgid "Network" msgstr "Δίκτυο" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Επικοινωνίες Î¼ÎµÏ„Î±Î¾Ï Î´Î¹ÎµÏγασιών" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "" "Κατάλογος των υποσυστημάτων που χÏησιμοποιοÏνται από ÎºÎ¿Î¹Î½Î¿Ï Î¼Îµ το σÏστημα " "υποδοχής" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "ΣÏστημα παÏαθÏÏων X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "ΣÏστημα παÏαθÏÏων Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "ΠαλινδÏόμηση στο σÏστημα παÏαθÏÏων X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Διακομιστής ήχου PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "Δίαυλος συνεδÏίας D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Δίαυλος συστήματος D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "ΠÏάκτοÏας AσφαλοÏÏ‚ ΚελÏφους" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Ευφυείς κάÏτες" #: src/models/sockets.js:93 msgid "Printing system" msgstr "ΣÏστημα εκτÏπωσης" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Κατάλογοι του Ï€ÏάκτοÏα GPG" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Λίστα των γνωστών υποδοχών που είναι διαθέσιμες στην απομόνωση" #: src/models/variables.js:40 msgid "Variables" msgstr "Μεταβλητές" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "Ï€.χ. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Κατάλογος μεταβλητών που εξάγονται στην εφαÏμογή" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %B,%Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Έκδοση" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Τελευταία ενημέÏωση" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "ΧÏόνος λειτουÏγίας" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Αυτή δεν είναι έγκυÏη επιλογή" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Εμφάνιση λεπτομεÏειών" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Εμφάνιση εφαÏμογής σε διαχειÏιστή λογισμικοÏ" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Δεν βÏέθηκε διαχειÏιστής λογισμικοÏ" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Όλες οι εφαÏμογές" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Αλλαγές που ισχÏουν για όλες τις εφαÏμογές Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Έκδοση Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Έκδοση Portal" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Αλλαγές διαδÏομής" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Βοήθεια" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_ΕγχειÏίδιο" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_ΣυντομεÏσεις πληκτÏολογίου" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_ΠεÏί Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Αλλαγή παγκοσμίως" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Αλλαγή από τον χÏήστη" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "αυτή η απόλυτη διαδÏομή" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "αυτή η διαδÏομή σε σχέση με τον Ï€Ïοσωπικό κατάλογο" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "όλες οι διαμοÏφώσεις του συστήματος" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "" "όλες τις βιβλιοθήκες του συστήματος, τα εκτελέσιμα και τα στατικά δεδομένα" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "όλα τα αÏχεία συστήματος" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "όλα τα αÏχεία χÏήστη" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "ο κατάλογος της επιφάνειας εÏγασίας" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "ο κατάλογος εγγÏάφων" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "ο κατάλογος λήψεων" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "ο μουσικός κατάλογος" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "ο κατάλογος εικόνων" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "ο δημόσιος κατάλογος" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "ο κατάλογος βίντεο" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "ο κατάλογος Ï€ÏοτÏπων" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "ο κατάλογος config" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "ο κατάλογος cache" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "ο κατάλογος data" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "ο κατάλογος runtime" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "ΜποÏεί να διαβάσει: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "ΜποÏεί να Ï„Ïοποποιήσει και να διαβάσει: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "ΜποÏεί να δημιουÏγήσει, να Ï„Ïοποποιήσει και να διαβάσει: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Δεν μποÏεί να διαβάσει: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Δεν μποÏεί να Ï„Ïοποποιήσει ή να διαβάσει: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Δεν μποÏείτε να δημιουÏγήσει, να Ï„Ïοποποιήσει ή να διαβάσει: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Μη Ïυθμισμένο" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Οι Ï€Ïοεπιλεγμένες διαδÏομές δεν μποÏοÏν να αφαιÏεθοÏν" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_ΕπαναφοÏά" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Καμία αλλαγή σε αυτή την εφαÏμογή" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "ΕπαναφοÏά δικαιωμάτων αυτής της εφαÏμογής" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", συμπεÏιλαμβανομένων των αλλαγών που δεν έγιναν με το Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Γενικά" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Εμφάνιση μνημονικών" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Εμφάνιση εγχειÏιδίου" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Εμφάνιση μενοÏ" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "ΣυντομεÏσεις πληκτÏολογίου" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Έξοδος" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Πλοήγηση" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Μετακίνηση Ï€Ïος τα αÏιστεÏά" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Μετακίνηση Ï€Ïος τα πάνω" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Μετακίνηση Ï€Ïος τα δεξιά" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Μετακίνηση Ï€Ïος τα κάτω" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "ΕφαÏμογές" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "ΕÏÏεση" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Δικαιώματα" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Εναλλαγή" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "ΕγχειÏίδιο" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "ΕÏÏεση επόμενου" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "ΕÏÏεση Ï€ÏοηγοÏμενου" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Τα δικαιώματα έχουν επαναφεÏθεί" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_ΑναίÏεση" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Δεν είναι δυνατή η φόÏτωση Ï€Ïοσπελάσεων λόγω λανθασμένου πεÏιεχομένου" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Ανανεώθηκε λόγω αλλαγών στις εγκαταστάσεις Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "ΚεντÏικό μενοÏ" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Δεν βÏέθηκαν εφαÏμογές." flatseal-2.3.0/po/es.po000066400000000000000000000377341467660615300147300ustar00rootroot00000000000000# Spanish translations for flatseal package. # Copyright (C) 2020 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Automatically generated, 2020. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2020-02-01 02:37-0300\n" "Last-Translator: Automatically generated\n" "Language-Team: none\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" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Un administrador de permisos para Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal es una utilidad gráfica para revisar y modificar permisos básicos " "de sus aplicaciones Flatpak." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "La ventana principal de Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal mostrando los permisos del sistema de archivos" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal mostrando cambios globales" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "ID de la aplicación que se seleccionó por última vez" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Desconocida" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Habla" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Apropia" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Lista de nombres conocidos en el bus de sesión" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Lista de nombres conocidos en el bus del sistema" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Aceleración de gráficos" #: src/models/devices.js:44 msgid "Input devices" msgstr "Dispositivos de entrada" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualización" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Memoria compartida" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Todos los dispositivos (ej. cámara web)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Lista de dispositivos disponibles en el sandbox" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Llamadas de sistema de desarrollo (ej. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programas de otras arquitecturas" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Bus de la red de área de controlador" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Memoria compartida por aplicación" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Lista de funciones disponibles para la aplicación" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Todos los archivos del sistema" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Todas las bibliotecas, ejecutables y datos estáticos" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Todas las configuraciones del sistema" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Todos los archivos de usuario" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Lista de archivos disponibles para la aplicación" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Otros archivos" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "ej. ~/juegos:ro, xdg-pictures, etc" #: src/models/persistent.js:37 msgid "Files" msgstr "Archivos" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "ej. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Lista de rutas relativas al directorio hogar creadas en el sandbox" #: src/models/portals.js:118 msgid "Background" msgstr "Segundo plano" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Puede ejecutarse en segundo plano" #: src/models/portals.js:128 msgid "Notifications" msgstr "Notificaciones" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Puede enviar notificaciones" #: src/models/portals.js:138 msgid "Microphone" msgstr "Micrófono" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Puede escuchar su micrófono" #: src/models/portals.js:148 msgid "Speakers" msgstr "Altavoz" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Puede reproducir sonidos en su altavoz" #: src/models/portals.js:158 msgid "Camera" msgstr "Cámara" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Puede grabar videos con su cámara" #: src/models/portals.js:168 msgid "Location" msgstr "Ubicación" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Puede acceder a su ubicación" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Lista de recursos otorgados selectivamente a la aplicación" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "No es compatible con la versión instalada de Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Requiere almacenamiento de permisos versión 2 o más reciente" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Los datos del portal aún no se han configurado" #: src/models/shared.js:39 msgid "Network" msgstr "Red" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Comunicaciones entre procesos" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Lista de subsistemas compartidos con el sistema" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "Sistema de ventanas X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Sistema de ventanas Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Sistema de ventanas X11 como respaldo" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Servidor de sonido PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "Bus de sesión D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Bus de sistema D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Agente de Shell seguro" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Tarjetas inteligentes" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Sistema de impresión" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Directorios de agentes GPG" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "Hereda el zócalo de Wayland" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Lista de zócalos conocidos disponibles en el sandbox" #: src/models/variables.js:40 msgid "Variables" msgstr "Variables" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "ej. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Lista de variables exportadas a la aplicación" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e de %B de %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Versión" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Última actualización" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Biblioteca de ejecución" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Esta no es una opción válida" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Mostrar detalles" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Mostrar aplicación en un administrador de software" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "No se encontró un administrador de software" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Todas las Aplicaciones" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Modificaciones que afectan a todas las aplicaciones Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Versión de Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Versión del Portal" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Ruta a Modificaciones" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Ayuda" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Documentación" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "Atajos de _Teclado" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "Acerca de _Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Modificado globalmente" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Modificado por el usuario" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "esta ruta absoluta" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "esta ruta relativa al directorio de usuario" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "todas las configuraciones del sistema" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "todas las bibliotecas, ejecutables y datos estáticos" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "todos los archivos del sistema" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "todos los archivos de usuario" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "el directorio de escritorio" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "el directorio de documentos" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "el directorio de descargas" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "el directorio de músicas" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "el directorio de imágenes" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "el directorio público" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "el directorio de videos" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "el directorio de plantillas" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "el directorio de configuración" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "el directorio de caché" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "el directorio de datos" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "el directorio de tiempo de ejecución" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Puede leer: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Puede modificar y leer: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Puede crear, modificar y leer: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "No puede leer: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "No puede modificar ni leer: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "No puede crear, modificar ni leer: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Desasignar" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Las rutas predeterminadas no se pueden eliminar" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Restablecer" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "No se hicieron cambios a esta aplicación" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Restablecer los permisos de esta aplicación" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", incluidos los cambios no realizados con Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Generales" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Mostrar mnemónicos" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Mostrar documentación" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Mostrar menú" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Atajos de teclado" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Salir" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navegación" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Moverse a la izquierda" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Moverse arriba" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Moverse a la derecha" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Moverse abajo" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Aplicaciones" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Buscar" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Permisos" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Cambiar" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Documentación" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Buscar siguiente" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Buscar anterior" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Permisos restablecidos" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Deshacer" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "No se pueden cargar cambios debido a contenidos incorrectos" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Actualizado debido a cambios en las instalaciones de Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Menú Principal" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "No se encontraron aplicaciones." flatseal-2.3.0/po/flatseal.pot000066400000000000000000000302001467660615300162550ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\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" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "" #: src/models/devices.js:44 msgid "Input devices" msgstr "" #: src/models/devices.js:51 msgid "Virtualization" msgstr "" #: src/models/devices.js:58 msgid "Shared memory" msgstr "" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "" #: src/models/features.js:51 msgid "Bluetooth" msgstr "" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "" #: src/models/filesystems.js:37 msgid "All system files" msgstr "" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "" #: src/models/filesystems.js:58 msgid "All user files" msgstr "" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "" #: src/models/persistent.js:37 msgid "Files" msgstr "" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "" #: src/models/portals.js:118 msgid "Background" msgstr "" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "" #: src/models/portals.js:128 msgid "Notifications" msgstr "" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "" #: src/models/portals.js:138 msgid "Microphone" msgstr "" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "" #: src/models/portals.js:148 msgid "Speakers" msgstr "" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "" #: src/models/portals.js:158 msgid "Camera" msgstr "" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "" #: src/models/portals.js:168 msgid "Location" msgstr "" #: src/models/portals.js:170 msgid "Can access your location" msgstr "" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "" #: src/models/shared.js:39 msgid "Network" msgstr "" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "" #: src/models/sockets.js:93 msgid "Printing system" msgstr "" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "" #: src/models/variables.js:40 msgid "Variables" msgstr "" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr "" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "" #: src/widgets/window.js:99 msgid "_Undo" msgstr "" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "" flatseal-2.3.0/po/fr.po000066400000000000000000000404531467660615300147200ustar00rootroot00000000000000# French translations for flatseal package. # Copyright (C) 2021 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Automatically generated, 2021. # mathieu , 2022. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2022-10-03 16:15-0400\n" "Last-Translator: mathieu \n" "Language-Team: French \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" "X-Generator: Poedit 3.1.1\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Gérer les permissions de Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 #, fuzzy msgid "seal;sandbox;override;" msgstr "sceller;bac à sable;sandbox;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal est un utilitaire graphique pour examiner et modifier les " "permissions de vos applications Flatpak." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "ID d'application sélectionné en dernier lieu" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Inconnu" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Communique" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Possède" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Liste de noms connus sur le bus session" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Liste de noms connus sur le bus système" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Accélération GPU" #: src/models/devices.js:44 msgid "Input devices" msgstr "Des dispositifs d'entrée" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualisation" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Mémoire partagée" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Tous les périphériques (e.g. webcam)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Liste des périphériques disponible dans le sac à sable" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Appels système de developpement (e.g. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programmes d’autres architectures" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Bus de données CAN" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Mémoire partagée de l’application" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Liste des fonctionnalités disponibles pour l’application" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Tous les fichiers du système" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "" "Toutes les bibliothèques du système, les exécutables et les données statiques" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Toutes les configurations du système" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Tous les fichiers utilisateurs" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "" "Liste des sous-ensembles du système de fichiers disponibles pour " "l’application" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Autres fichiers" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "e.g. ~/games:ro, xdg-pictures, etc" #: src/models/persistent.js:37 msgid "Files" msgstr "Fichiers" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "e.g. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "" "Liste des chemins relatifs au répertoire personnel créé dans le sac de sable" #: src/models/portals.js:118 msgid "Background" msgstr "Arrière-plan" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Peut fonctionner en arrière-plan" #: src/models/portals.js:128 msgid "Notifications" msgstr "Notifications" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Peut envoyer des notifications" #: src/models/portals.js:138 msgid "Microphone" msgstr "Microphone" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Peut écouter votre microphone" #: src/models/portals.js:148 msgid "Speakers" msgstr "Haut-parleurs" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Peut jouer des sons dans vos haut-parleurs" #: src/models/portals.js:158 msgid "Camera" msgstr "Appareil photo" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Peut enregistrer des vidéos avec votre appareil photo" #: src/models/portals.js:168 msgid "Location" msgstr "Localisation" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Peut accéder à votre localisation" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Liste des ressources accordées sélectivement à l’application" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Non pris en charge par la version de Flatpak installée" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Nécessite la version 2 ou ultérieur du magasin de permissions" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Les données du portail n’ont pas encore été configurées" #: src/models/shared.js:39 msgid "Network" msgstr "Réseau" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Communications inter-processus" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Liste des sous-systèmes partagés avec le système hôte" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "Système de fenêtrage X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Système de fenêtrage Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Retourner au système de fenêtrage X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Serveur audio PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "Bus session D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Bus système D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Agent Secure Shell" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Carte à puce" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Système d’impression" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Répertoires de l'agent GPG" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Liste des prises connues et disponibles dans le sac de sable" #: src/models/variables.js:40 msgid "Variables" msgstr "Variables" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "e.g. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Liste des variables exportées vers l’application" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%B %e, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Version" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Dernière mise à jour" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Environnement d’exécution" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Ceci n’est pas une option valide" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Voir les Détails" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Afficher l’application dans un gestionnaire de logiciels" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Aucun gestionnaire de logiciels trouvé" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Toutes les Applications" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Modifications appliqués à toutes les applications Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Version de Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Version du Portail" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Chemin des modifications" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Aide" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Documentation" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "Raccourcis _Claviers" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "À propos de _Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Changé globalement" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Changé par l’utilisateur" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "ce chemin absolue" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "ce chemin relatif au répertoire personnel" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "toutes les configurations système" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "" "toutes les bibliothèques du système, les exécutables et les données statiques" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "tous les fichiers système" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "tous les fichiers utilisateurs" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "le répertoire de bureau" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "le répertoire des documents" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "le répertoire des téléchargements" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "le répertoire des musiques" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "le répertoire des photos" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "le répertoire public" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "le répertoire des vidéos" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "le répertoire des modèles" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "le répertoire de configuration" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "le répertoire du cache" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "le répertoire des données" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "le répertoire de l’environnement d’exécution" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Peut lire : %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Peut modifier et lire : %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Peut créer, modifier et lire : %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Ne peut pas lire : %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Ne peut pas modifier ou lire : %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Ne peut pas créer, modifier ou lire : %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Annuler" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Les chemins par défaut ne peuvent pas être supprimés" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Réinitialiser" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Aucune modification effectuée à cette application" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Réinitialiser les permissions de cette application" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", y compris les changements non effectués avec Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Général" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Afficher les mnémoniques" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Afficher la documentation" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Afficher le menu" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Afficher les raccourcis clavier" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Quitter" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigation" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Déplacer à gauche" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Déplacer en haut" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Déplacer à droite" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Déplacer en bas" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Applications" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Rechercher" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Permissions" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Basculer" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Documentation" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Trouver le prochain" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Trouver le précédent" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Les permissions ont été réinitialisées" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Annuler" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "" "Impossible de charger les modifications en raison d'un contenu incorrect" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Actualisé en raison de modifications dans les installations Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Menu principal" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Aucune application trouvée." flatseal-2.3.0/po/he.po000066400000000000000000000414511467660615300147040ustar00rootroot00000000000000# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # # Yaron Shahrabani , 2022. msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-21 23:01+0300\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \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=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? " "2 : 3);\n" "X-Generator: Poedit 3.4.2\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "ניהול הרש×ות של Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "×יטו×;בידוד;×רגז חול;מעקף;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "Flatseal ×”×•× ×›×œ×™ גרפי לסקירה ושינוי הרש×ות של יישומי ×”â€Flatpak שלך." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "החלון הר×שי של Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal מציג הרש×ות מערכת קבצי×" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal מציג ×ž×¢×§×¤×™× ×›×œ×œ×™×™×" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "מזהה ×פליקציה שנבחר ל×חרונה" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "×œ× ×™×“×•×¢" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "מדבר ×¢×" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "×‘×¢×œ×™× ×©×œ" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "רשימות של שמות ×ž×•×›×¨×™× ×‘×פיק ההפעלה" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "רשימות של שמות ×ž×•×›×¨×™× ×‘×פיק המערכת" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "×”×צת מעבד גרפי" #: src/models/devices.js:44 msgid "Input devices" msgstr "התקני קלט" #: src/models/devices.js:51 msgid "Virtualization" msgstr "וירטו×ליזציה" #: src/models/devices.js:58 msgid "Shared memory" msgstr "זיכרון שיתופי" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "כל ×”×”×ª×§× ×™× (למשל: מצלמה)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "רשימת ×”×”×ª×§× ×™× ×©×–×ž×™× ×™× ×‘×רגז החול" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "קרי×ות מערכת לפיתוח (למשל: ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "תוכניות מ×רכיטקטורות ×חרות" #: src/models/features.js:51 msgid "Bluetooth" msgstr "בלוטות׳" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "×פיק רשת מקומית לבקר" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "זיכרון ×™×™×©×•× ×©×™×ª×•×¤×™" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "רשימה של יכולות שזמינות ליישו×" #: src/models/filesystems.js:37 msgid "All system files" msgstr "כל קובצי המערכת" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "כל ספריות המערכת, קובצי ההפעלה ×•×”× ×ª×•× ×™× ×”×¡×˜×˜×™×™×" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "כל הגדרות המערכת" #: src/models/filesystems.js:58 msgid "All user files" msgstr "כל קובצי המשתמש" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "הצגת תת־סדרות של קובצי המערכות הזמינות ליישו×" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "×§×‘×¦×™× ×חרי×" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "למשל: ‎~/games:ro,†xdg-pictures,†etc" #: src/models/persistent.js:37 msgid "Files" msgstr "קבצי×" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "למשל: thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "רשימת × ×ª×™×‘×™× ×‘×™×—×¡ לתיקיית הבית שנוצרו ב×רגז החול" #: src/models/portals.js:118 msgid "Background" msgstr "רקע" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "יכול לרוץ ברקע" #: src/models/portals.js:128 msgid "Notifications" msgstr "התר×ות" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "יכול לשלוח התר×ות" #: src/models/portals.js:138 msgid "Microphone" msgstr "מיקרופון" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "יכול לה×זין למיקרופון" #: src/models/portals.js:148 msgid "Speakers" msgstr "רמקולי×" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "יכול להשמיע ×¦×œ×™×œ×™× ×“×¨×š הרמקולי×" #: src/models/portals.js:158 msgid "Camera" msgstr "מצלמה" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "יכול להקליט ×¡×¨×˜×•× ×™× ×‘×מצעות המצלמה שלך" #: src/models/portals.js:168 msgid "Location" msgstr "מיקו×" #: src/models/portals.js:170 msgid "Can access your location" msgstr "יכול לגשת ×œ×ž×™×§×•× ×©×œ×š" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "רשימה של מש××‘×™× ×©×ושרו ב×ופן יחידני ליישו×" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "×œ× × ×ª×ž×š על ידי הגרסה המותקנת של Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "דורש ×חסון הרש×ות בגרסה 2 ומעלה" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "נתוני שער הגישה ×œ× ×”×•×§×ž×• עדיין" #: src/models/shared.js:39 msgid "Network" msgstr "רשת" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "תקשורת בין תהליכי×" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "רשימה של תת־מערכות שמשותפות ×¢× ×”×ž×¢×¨×›×ª המ×רחת" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "מערכת חלונ×ית X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "מערכת חלונ×ית Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "נסיגה למערכת חלונ×ית X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "שרת שמע PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "×פיק הפעלה ב־D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "×פיק מערכת ב־D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "סוכן מעטפת מ×ובטחת (SSH)" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "×›×¨×˜×™×¡×™× ×—×›×ž×™×" #: src/models/sockets.js:93 msgid "Printing system" msgstr "מערכת הדפסה" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "תיקיות GPG-Agent" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "ירושת שקע של Wayland" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "רשימה של ×©×§×¢×™× ×ž×•×›×¨×™× ×©×–×ž×™× ×™× ×‘×רגז החול" #: src/models/variables.js:40 msgid "Variables" msgstr "משתני×" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "למשל: GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "רשימת ×”×ž×©×ª× ×™× ×©×™×™×•×¦×ו ליישו×" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e ב%B, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "גרסה" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "עדכון ×חרון" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "סביבת הרצה" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "×–×ת ××™× ×” ×פשרות תקנית" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "×”_צגת פרטי×" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "הצגת ×”×™×™×©×•× ×‘×ž× ×”×œ התוכנות" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "×œ× × ×ž×¦× ×ž× ×”×œ תוכנות" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "כל היישומי×" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "×©×™× ×•×™×™× ×©×—×œ×™× ×¢×œ כל גרס×ות ×”Ö¾Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "גרסת Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "גרסת Portal" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "מחליף נתיב" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "×¢_זרה" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_תיעוד" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_קיצורי מקלדת" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_על Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "התחלף כללית" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "התחלף על ידי המשתמש" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "נתיב מוחלט ×–×”" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "נתיב ×–×” ביחס לתיקיית הבית" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "כל הגדרות המערכת" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "כל ספריות המערכת, קובצי ההפעלה ×•×”× ×ª×•× ×™× ×”×¡×˜×˜×™×™×" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "כל קובצי המערכת" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "כל קובצי המשתמש" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "תיקיית שולחן העבודה" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "תיקיית המסמכי×" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "תיקיית ההורדות" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "תיקיית המוזיקה" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "תיקיית התמונות" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "התיקייה הציבורית" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "תיקיית הסרטוני×" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "תיקיית התבניות" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "תיקיית ההגדרות" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "תיקיית המטמון" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "תיקיית הנתוני×" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "תיקיית סביבת ההרצה" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "×פשר לקרו×: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "×פשר לערוך ולקרו×: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "×פשר ליצור, לערוך ולקרו×: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "××™ ×פשר לקרו×: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "××™ ×פשר לערוך ×ו לקרו×: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "××™ ×פשר ליצור, לערוך ×ו לקרו×: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "ביטול הגדרה" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "××™ ×פשר להסיר ×ת נתיבי ברירת המחדל" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_×יפוס" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "×œ× ×‘×•×¦×¢×• ×©×™× ×•×™×™× ×œ×™×™×©×•× ×”×–×”" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "×יפוס הרש×ות ×”×™×™×©×•× ×”×–×”" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", כולל ×©×™× ×•×™×™× ×©×œ× ×‘×•×¦×¢×• דרך Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "כללי" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "הצגת עזרי זיכרון" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "הצגת תיעוד" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "הצגת תפריט" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "קיצורי מקלדת" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "יצי××”" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "ניווט" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "×”×–×–×” שמ×לה" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "×”×–×–×” למעלה" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "×”×–×–×” ימינה" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "×”×–×–×” למטה" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "יישומי×" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "×יתור" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "הרש×ות" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "בורר" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "תיעוד" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "×יתור הב×" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "×יתור הקוד×" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "ההרש×ות ×ופסו" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_ביטול" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "×œ× × ×™×ª×Ÿ לטעון ×©×™× ×•×™×™× ×¢×§×‘ תוכן שגוי" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "רענן עקב ×©×™× ×•×™×™× ×‘×”×ª×§× ×•×ª Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "תפריט ר×שי" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "×œ× × ×ž×¦×ו יישומי×." flatseal-2.3.0/po/hi.po000066400000000000000000000501511467660615300147050ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # FIRST AUTHOR , YEAR. # Scrambled777 , 2024. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-05-06 19:26+0530\n" "Last-Translator: Scrambled777 \n" "Language-Team: Hindi\n" "Language: hi\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: Gtranslator 46.1\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Flatpak अनà¥à¤®à¤¤à¤¿à¤¯à¤¾à¤‚ पà¥à¤°à¤¬à¤‚धित करें" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "सील;सैंडबॉकà¥à¤¸;अधà¥à¤¯à¤¾à¤°à¥‹à¤¹à¤£;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal आपके Flatpak अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—ों की अनà¥à¤®à¤¤à¤¿à¤¯à¥‹à¤‚ की समीकà¥à¤·à¤¾ और संशोधन करने के लिठ" "चितà¥à¤°à¤¾à¤¤à¥à¤®à¤• उपयोगिता है।" #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Flatseal की मà¥à¤–à¥à¤¯ खिड़की" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal फाइलसिसà¥à¤Ÿà¤® अनà¥à¤®à¤¤à¤¿à¤¯à¤¾à¤‚ दिखाते हà¥à¤" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal वैशà¥à¤µà¤¿à¤• अधà¥à¤¯à¤¾à¤°à¥‹à¤¹à¤£ दिखाते हà¥à¤" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— ID जिसे अंतिम बार चà¥à¤¨à¤¾ गया था" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "अजà¥à¤žà¤¾à¤¤" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "वारà¥à¤¤à¤¾" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "मालिक" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "सतà¥à¤° बस में जाने-माने नामों की सूची" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "सिसà¥à¤Ÿà¤® बस पर जाने-माने नामों की सूची" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU तà¥à¤µà¤°à¤£" #: src/models/devices.js:44 msgid "Input devices" msgstr "आगत उपकरण" #: src/models/devices.js:51 msgid "Virtualization" msgstr "आभासीकरण" #: src/models/devices.js:58 msgid "Shared memory" msgstr "साà¤à¤¾ मेमोरी" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "सभी उपकरण (उदा. वेबकैम)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "सैंडबॉकà¥à¤¸ में उपलबà¥à¤§ उपकरणों की सूची" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "विकास syscalls (उदा. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "अनà¥à¤¯ आरà¥à¤•िटेकà¥à¤šà¤° से पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤®" #: src/models/features.js:51 msgid "Bluetooth" msgstr "बà¥à¤²à¥‚टूथ" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "नियंतà¥à¤°à¤• कà¥à¤·à¥‡à¤¤à¥à¤° नेटवरà¥à¤• बस" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— दà¥à¤µà¤¾à¤°à¤¾ साà¤à¤¾ मेमोरी" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— के लिठउपलबà¥à¤§ सà¥à¤µà¤¿à¤§à¤¾à¤“ं की सूची" #: src/models/filesystems.js:37 msgid "All system files" msgstr "सभी सिसà¥à¤Ÿà¤® फाइलें" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "सभी सिसà¥à¤Ÿà¤® लाइबà¥à¤°à¥‡à¤°à¥€, निषà¥à¤ªà¤¾à¤¦à¤¨à¤¯à¥‹à¤—à¥à¤¯ और सà¥à¤¥à¤¿à¤° डेटा" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "सभी सिसà¥à¤Ÿà¤® विनà¥à¤¯à¤¾à¤¸" #: src/models/filesystems.js:58 msgid "All user files" msgstr "सभी उपयोकà¥à¤¤à¤¾ फाइलें" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— के लिठउपलबà¥à¤§ फाइलसिसà¥à¤Ÿà¤® उपसमà¥à¤šà¥à¤šà¤¯ की सूची" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "अनà¥à¤¯ फाइलें" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "उदा. ~/games:ro, xdg-pictures, आदि" #: src/models/persistent.js:37 msgid "Files" msgstr "फाइलें" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "उदा. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "सैंडबॉकà¥à¤¸ में बनाठगठहोमनिरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा-सापेकà¥à¤· पथों की सूची" #: src/models/portals.js:118 msgid "Background" msgstr "पृषà¥à¤ à¤­à¥‚मि" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "पृषà¥à¤ à¤­à¥‚मि में चल सकता है" #: src/models/portals.js:128 msgid "Notifications" msgstr "सूचनाà¤à¤‚" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "सूचनाà¤à¤‚ भेज सकता है" #: src/models/portals.js:138 msgid "Microphone" msgstr "माइकà¥à¤°à¥‹à¤«à¥‹à¤¨" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "आपके माइकà¥à¤°à¥‹à¤«à¥‹à¤¨ को सà¥à¤¨ सकता है" #: src/models/portals.js:148 msgid "Speakers" msgstr "सà¥à¤ªà¥€à¤•र" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "आपके सà¥à¤ªà¥€à¤•र पर धà¥à¤µà¤¨à¤¿à¤¯à¤¾à¤‚ बजा सकता है" #: src/models/portals.js:158 msgid "Camera" msgstr "कैमरा" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "अपने कैमरे से वीडियो रिकॉरà¥à¤¡ कर सकता है" #: src/models/portals.js:168 msgid "Location" msgstr "लोकेशन" #: src/models/portals.js:170 msgid "Can access your location" msgstr "आपकी लोकेशन तक पहà¥à¤‚च सकता है" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— को चà¥à¤¨à¤¿à¤‚दा रूप से दिठगठसंसाधनों की सूची" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Flatpak के सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ संसà¥à¤•रण दà¥à¤µà¤¾à¤°à¤¾ समरà¥à¤¥à¤¿à¤¤ नहीं है" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "अनà¥à¤®à¤¤à¤¿ सà¥à¤Ÿà¥‹à¤° संसà¥à¤•रण 2 या नठकी आवशà¥à¤¯à¤•ता है" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "पोरà¥à¤Ÿà¤² डेटा अभी तक सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ नहीं किया गया है" #: src/models/shared.js:39 msgid "Network" msgstr "नेटवरà¥à¤•" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "अंतर-पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ संचार" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "होसà¥à¤Ÿ सिसà¥à¤Ÿà¤® के साथ साà¤à¤¾ की गई उपपà¥à¤°à¤£à¤¾à¤²à¤¿à¤¯à¥‹à¤‚ की सूची" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11 विंडोइंग सिसà¥à¤Ÿà¤®" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland विंडोइंग सिसà¥à¤Ÿà¤®" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "X11 विंडोइंग सिसà¥à¤Ÿà¤® पर वापसी" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio धà¥à¤µà¤¨à¤¿ सरà¥à¤µà¤°" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus सतà¥à¤° बस" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus सिसà¥à¤Ÿà¤® बस" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ शैल à¤à¤œà¥‡à¤‚ट" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "सà¥à¤®à¤¾à¤°à¥à¤Ÿ कारà¥à¤¡" #: src/models/sockets.js:93 msgid "Printing system" msgstr "मà¥à¤¦à¥à¤°à¤£ पà¥à¤°à¤£à¤¾à¤²à¥€" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-Agent निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ाà¤à¤‚" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "सैंडबॉकà¥à¤¸ में उपलबà¥à¤§ जाने-माने सॉकेट की सूची" #: src/models/variables.js:40 msgid "Variables" msgstr "चर" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "उदा. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— में निरà¥à¤¯à¤¾à¤¤ किठगठचरों की सूची" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%B %e, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "संसà¥à¤•रण" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "अंतिम अदà¥à¤¯à¤¤à¤¿à¤¤" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "रनटाइम" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "यह कोई मानà¥à¤¯ विकलà¥à¤ª नहीं है" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "विवरण दिखाà¤à¤‚ (_S)" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤° पà¥à¤°à¤¬à¤‚धक में अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— दिखाà¤à¤‚" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "कोई सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤° पà¥à¤°à¤¬à¤‚धक नहीं मिला" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "सभी अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "परिवरà¥à¤¤à¤¨ जो सभी Flatpak अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—ों पर लागू होते हैं" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak संसà¥à¤•रण" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "पोरà¥à¤Ÿà¤² संसà¥à¤•रण" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "बदलाव पथ" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "सहायता (_H)" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼à¥€à¤•रण (_D)" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "कीबोरà¥à¤¡ शॉरà¥à¤Ÿà¤•ट (_K)" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "Flatseal के बारे में (_A)" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "वैशà¥à¤µà¤¿à¤• सà¥à¤¤à¤° पर बदला गया" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "उपयोकà¥à¤¤à¤¾ दà¥à¤µà¤¾à¤°à¤¾ बदला गया" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "यह निरपेकà¥à¤· पथ" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "होम निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा से संबंधित यह पथ" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "सभी सिसà¥à¤Ÿà¤® विनà¥à¤¯à¤¾à¤¸" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "सभी सिसà¥à¤Ÿà¤® लाइबà¥à¤°à¥‡à¤°à¥€, निषà¥à¤ªà¤¾à¤¦à¤¨à¤¯à¥‹à¤—à¥à¤¯ और सà¥à¤¥à¤¿à¤° डेटा" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "सभी सिसà¥à¤Ÿà¤® फाइलें" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "सभी उपयोकà¥à¤¤à¤¾ फाइलें" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "डेसà¥à¤•टॉप निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "डाउनलोड निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "संगीत निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "चितà¥à¤° निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "सारà¥à¤µà¤œà¤¨à¤¿à¤• निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "वीडियो निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "खाके निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "विनà¥à¤¯à¤¾à¤¸ निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "कैशे निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "डेटा निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "रनटाइम निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "पढ़ सकते हैं: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "संशोधित और पढ़ सकते हैं: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "बना, संशोधित और पढ़ सकते हैं: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "पढ़ नहीं सकते: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "संशोधित या पढ़ नहीं सकते: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "बना, संशोधित या पढ़ नहीं सकते: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "अनिरà¥à¤§à¤¾à¤°à¤¿à¤¤" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "तयशà¥à¤¦à¤¾ पथ नहीं हटाठजा सकते" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "रीसेट (_R)" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "इस अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— में कोई बदलाव नहीं किया गया है" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "इस अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— की अनà¥à¤®à¤¤à¤¿à¤¯à¤¾à¤‚ रीसेट करें" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", Flatseal के साथ नहीं किठगठपरिवरà¥à¤¤à¤¨ सहित" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "सामानà¥à¤¯" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "निमोनिकà¥à¤¸ दिखाà¤à¤‚" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼ दिखाà¤à¤‚" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "मेनू दिखाà¤à¤‚" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "कीबोरà¥à¤¡ शॉरà¥à¤Ÿà¤•ट" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "छोड़ें" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "नेविगेशन" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "बाà¤à¤‚ जाà¤à¤‚" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "ऊपर जाà¤à¤‚" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "दाà¤à¤‚ जाà¤à¤‚" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "नीचे जाà¤à¤‚" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "खोजें" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "अनà¥à¤®à¤¤à¤¿à¤¯à¤¾à¤‚" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "टॉगल" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼à¥€à¤•रण" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "अगला खोजें" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "पिछला खोजें" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "अनà¥à¤®à¤¤à¤¿à¤¯à¤¾à¤‚ रीसेट कर दी गई हैं" #: src/widgets/window.js:99 msgid "_Undo" msgstr "पूरà¥à¤µà¤µà¤¤ करें (_U)" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "गलत सामगà¥à¤°à¥€ के कारण अधà¥à¤¯à¤¾à¤°à¥‹à¤¹à¤£ लोड नहीं किया जा सकता" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Flatpak संसà¥à¤¥à¤¾à¤ªà¤¨à¥‹à¤‚ में परिवरà¥à¤¤à¤¨ के कारण ताजा किया गया" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "मà¥à¤–à¥à¤¯ मेनू" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "कोई अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— नहीं मिला।" flatseal-2.3.0/po/hu.po000066400000000000000000000403511467660615300147220ustar00rootroot00000000000000# Hungarian translations for flatseal package. # Copyright (C) 2020 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Automatically generated, 2020. # Dévényi Benedek , 2024. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-03-13 23:32+0100\n" "Last-Translator: Dévényi Benedek \n" "Language-Team: Hungarian <>\n" "Language: hu\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: Gtranslator 45.3\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "A Flatpak engedélykezelÅ‘je" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "tömítés;homokozó;felülírás;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal egy grafikus segédprogram, amellyel áttekintheti és módosíthatja a " "Flatpak-alkalmazások alapvetÅ‘ engedélyeit." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "A Flatseal fÅ‘ablaka" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Fájlrendszer-engedélyek a Flatsealben" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Globális felülírások a Flatsealben" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Utoljára kiválasztott alkalmazásazonosító" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Ismeretlen" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Beszélget" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Tulajdonol" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Az alkalmazás által elért közismert nevek a munkamenet buszon" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Az alkalmazás által elért közismert nevek a rendszer buszon" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Hardveres gyorsítás" #: src/models/devices.js:44 msgid "Input devices" msgstr "Beviteli eszközök" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualizálás" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Megosztott memória" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Minden eszköz (pl. webkamera)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "A homokozóban elérhetÅ‘ eszközök" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Fejlesztési rendszerhívások (pl. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Más architektúrák programjai" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "CAN (Controller Area Network) -busz" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Alkalmazás megosztott memória" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Az alkalmazás számára elérhetÅ‘ szolgáltatások" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Minden rendszerfájl" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Minden rendszerkönyvtár, végrehajtható fájl és statikus adat" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Minden rendszerkonfiguráció" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Minden felhasználói fájl" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Az alkalmazás számára elérhetÅ‘ fájlrendszer-részletek" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Egyéb fájlok" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "pl. ~/játékok:ro, xdg-pictures, stb." #: src/models/persistent.js:37 msgid "Files" msgstr "Fájlok" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "pl. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "" "A homokozóban létrehozott, a felhasználói mappához relatív elérési utak" #: src/models/portals.js:118 msgid "Background" msgstr "Háttérmunka" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Futhat a háttérben" #: src/models/portals.js:128 msgid "Notifications" msgstr "Értesítések" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Értesítéseket küldhet" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Használhatja a mikrofont" #: src/models/portals.js:148 msgid "Speakers" msgstr "Hangszórók" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Hangot játszhat le a hangszórókon" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Videót rögzíthet a kamerával" #: src/models/portals.js:168 msgid "Location" msgstr "Hely" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Hozzáférhet az Ön tartózkodási helyéhez" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Az alkalmazásnak kifejezetten megadott engedélyek" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "A Flatpak telepített verziója nem támogatja" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Engedélytároló 2. vagy újabb verziója szükséges" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "A portál adatai még nem lettek beállítva" #: src/models/shared.js:39 msgid "Network" msgstr "Hálózat" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Folyamatok közötti kommunikáció" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "A gazdarendszerrel megosztott alrendszerek" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11-ablakrendszer" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland-ablakrendszer" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Tartalék X11-ablakrendszer" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio-hangkiszolgáló" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus munkamenet busz" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus rendszer busz" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Secure Shell ügynök" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Intelligens kártyák" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Nyomtatási rendszer" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-ügynöki (gpg-agent) könyvtárak" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "A Wayland-szoftvercsatorna örökölése" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "A homokozóban elérhetÅ‘ közismert szoftvercsatornák" #: src/models/variables.js:40 msgid "Variables" msgstr "Változók" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "pl. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Az alkalmazás számára exportált változók" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%Y. %B %e." #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Verzió" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Utolsó frissítés" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Futtatókörnyezet" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Érvénytelen beállítás" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "Alkalmazás _részletei" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Az alkalmazás megjelenítése a szoftverkezelÅ‘ben" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Nem található szoftverkezelÅ‘" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Minden alkalmazás" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Az összes Flatpak alkalmazásra érvényes módosítások" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak-verzió" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Portál-verzió" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Megváltoztatja az elérési utat" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Súgó" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Dokumentáció" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "A Flatseal _névjegye" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Globálisan módosítva" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "A felhasználó által módosítva" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "ezt az abszolút elérési utat" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "ezt a felhasználói mappához relatív elérési utat" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "az összes rendszerkonfigurációt" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "az összes rendszerkönyvtárat, végrehajtható fájlt és statikus adatot" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "az összes rendszerfájlt" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "az összes felhasználói fájlt" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "az asztali könyvtárat" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "a dokumentumok könyvtárát" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "a letöltési könyvtárat" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "a zenei könyvtárat" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "a képek könyvtárát" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "a nyilvános könyvtárat" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "a videók könyvtárát" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "a sablonok könyvtárát" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "a konfigurációs könyvtárat" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "a gyorsítótár könyvtárat" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "az adatkönyvtárat" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "a futtatókörnyezet könyvtárát" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Olvashatja %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Olvashatja és módosíthatja %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Olvashatja, módosíthatja és létrehozhatja %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Nem olvashatja %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Nem olvashatja és módosíthatja %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Nem olvashatja, módosíthatja vagy hozhatja létre %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Visszaállítás" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Az alapértelmezett elérési útvonalakat nem lehet eltávolítani" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "Alap_helyzet" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Az alkalmazásban nem történt változás" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Alkalmazás engedélyeinek alaphelyzetbe állítása" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr "" ", beleértve a nem a Flatseal használatával végrehajtott változtatásokat" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Ãltalános" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "EmlékeztetÅ‘k megjelenítése" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Dokumentáció megjelenítése" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Menü megnyitása" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Gyorsbillentyűk" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Kilépés" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigáció" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Ugrás balra" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Ugrás felfelé" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Ugrás jobbra" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Ugrás lefelé" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Alkalmazások" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Keresés" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Engedélyek" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Ãtkapcsolás" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Dokumentáció" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "KövetkezÅ‘ keresése" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "ElÅ‘zÅ‘ keresése" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Az engedélyek vissza lettek állítva" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Visszavonás" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Helytelen tartalom miatt a módosítások nem tölthetÅ‘k be" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Frissítve a Flatpak telepítések változásai miatt" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "FÅ‘menü" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Nem található alkalmazás" flatseal-2.3.0/po/id.po000066400000000000000000000366401467660615300147100ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Kukuh Syafaat , 2020-2023. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2023-09-23 16:22+0700\n" "Last-Translator: Kukuh Syafaat \n" "Language-Team: \n" "Language: id\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 3.3.1\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Pengelola izin untuk Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 #, fuzzy msgid "seal;sandbox;override;" msgstr "seal;sandbox;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal adalah utilitas grafis untuk meninjau dan memodifikasi izin dasar " "dari aplikasi Flatpak Anda." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "ID Aplikasi yang terakhir dipilih" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Tidak dikenal" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Pembicaraan" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Memiliki" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Daftar nama terkenal di bus sesi" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Daftar nama terkenal di bus sistem" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Akselerasi GPU" #: src/models/devices.js:44 msgid "Input devices" msgstr "Perangkat masukan" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualisasi" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Berbagi memori" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Semua perangkat (mis. kamera web)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Daftar perangkat yang tersedia di sandbox" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Syscalls pengembangan (mis. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Program dari arsitektur lain" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Bus Controller Area Network" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Memori Bersama Aplikasi" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Daftar fitur yang tersedia untuk aplikasi" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Semua berkas sistem" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Semua pustaka sistem, data yang dapat dieksekusi, dan data statis" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Semua konfigurasi sistem" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Semua berkas pengguna" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Daftar subset sistem berkas yang tersedia untuk aplikasi" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Berkas lainnya" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "misalnya ~/games:ro, xdg-pictures, dll" #: src/models/persistent.js:37 msgid "Files" msgstr "Berkas" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "misalnya .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Daftar path homedir relatif yang dibuat di sandbox" #: src/models/portals.js:118 msgid "Background" msgstr "Latar belakang" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Dapat berjalan di latar belakang" #: src/models/portals.js:128 msgid "Notifications" msgstr "Notifikasi" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Dapat mengirim notifikasi" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Dapat mendengarkan mikrofon Anda" #: src/models/portals.js:148 msgid "Speakers" msgstr "Speaker" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Dapat memutar suara ke speaker Anda" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Dapat merekam video dengan kamera Anda" #: src/models/portals.js:168 msgid "Location" msgstr "Lokasi" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Dapat mengakses lokasi Anda" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Daftar sumber daya yang diberikan secara selektif ke aplikasi" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Tidak didukung oleh versi Flatpak yang dipasang" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Membutuhkan izin penyimpanan versi 2 atau yang lebih baru" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Data portal belum disiapkan" #: src/models/shared.js:39 msgid "Network" msgstr "Jaringan" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Komunikasi antar proses" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Daftar subsistem yang berbagi dengan sistem host" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "Sistem jendela X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Sistem jendela Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Fallback ke sistem jendela X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Peladen suara PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "Bus sesi D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Bus sistem D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Agen Secure Shell" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Kartu pintar (Smart card)" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Sistem pencetakan" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Direktori Agen GPG" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Daftar soket yang tersedia di sandbox" #: src/models/variables.js:40 msgid "Variables" msgstr "Variabel" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "misalnya GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Daftar variabel yang diekspor ke aplikasi" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %b %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Versi" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Terakhir Dimutakhirkan" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Runtime" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Ini bukan opsi yang valid" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Tampilkan Detail" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Tampilkan aplikasi dalam manajer perangkat lunak" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Tidak ditemukan manajer perangkat lunak" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Semua Aplikasi" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Perubahan yang berlaku untuk semua aplikasi Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Versi Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Versi Portal" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Perubahan Path" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Bantuan" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Dokumentasi" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "Pintasan Papan Ti_k" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "Tent_ang Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Berubah secara global" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Diubah oleh pengguna" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "path absolut ini" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "path ini relatif terhadap direktori rumah" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "semua konfigurasi sistem" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "semua pustaka sistem, data yang dapat dieksekusi, dan data statis" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "semua berkas sistem" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "semua berkas pengguna" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "direktori destop" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "direktori dokumen" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "direktori unduhan" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "direktori musik" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "direktori gambar" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "direktori publik" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "direktori video" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "direktori templat" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "direktori konfigurasi" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "direktori singgahan" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "direktori data" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "direktori runtime" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Dapat membaca: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Dapat memodifikasi dan membaca: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Dapat membuat, memodifikasi dan membaca: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Tidak bisa membaca: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Tidak dapat memodifikasi atau membaca: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Tidak dapat membuat, memodifikasi, atau membaca: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Tidak Diatur" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Path bawaan tidak dapat dihapus" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "Atu_r Ulang" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Tidak ada perubahan pada aplikasi ini" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Atur ulang izin aplikasi ini" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", termasuk perubahan yang tidak dilakukan dengan Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Umum" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Tampilkan mnemonik" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Tampilkan dokumentasi" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Tampilkan menu" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Pintasan Papan Tik" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Keluar" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigasi" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Pindah ke kiri" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Pindah ke atas" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Pindah ke kanan" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Pindah ke bawah" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Aplikasi" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Cari" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Izin" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Jungkitkan" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Dokumentasi" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Cari berikutnya" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Cari sebelumnya" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Izin telah diatur ulang" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Tak jadi" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Tidak dapat memuat penggantian karena konten salah" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Disegarkan karena perubahan dalam pemasangan Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Menu Utama" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Tidak ada aplikasi yang ditemukan." flatseal-2.3.0/po/it.po000066400000000000000000000376071467660615300147340ustar00rootroot00000000000000# Italian translations for flatseal package # Traduzioni italiane per il pacchetto flatseal.. # Copyright (C) 2020, 2021, 2023 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Milo Casagrande , 2020, 2021, 2023. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2023-09-14 10:56+0200\n" "Last-Translator: Milo Casagrande \n" "Language-Team: Italian \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 3.1.1\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Un gestore di permessi per Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 #, fuzzy msgid "seal;sandbox;override;" msgstr "permessi;seal;sandbox;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal è uno strumento grafico per visualizzare e modificare i permessi di " "base delle applicazioni Flatpak." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "ID dell'applicazione selezionata per ultima" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Sconosciuto" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Parla a" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Possiede" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Elenco di nomi noti sul bus di sessione" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Elenco di nomi noti sul bus di sistema" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Accelerazione tramite GPU" #: src/models/devices.js:44 msgid "Input devices" msgstr "Dispositivi di input" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualizzazione" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Memoria condivisa" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Tutti i dispositivi (per es. fotocamera)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Elenco dei dispositivi disponibili nella sandbox" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Chiamate di sistema di sviluppo (per es. Ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programmi da altre architetture" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Bus di rete dell'area controller" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Memoria condivisa per applicazione" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Elenco delle funzionalità disponibili per l'applicazione" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Tutti i file di sistema" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Tutte le librerie di sistema, eseguibili e dati statici" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Tutte le configurazioni di sistema" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Tutti i file utente" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Elenco dei sottoinsiemi di filesystem disponibili per l'applicazione" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Altri file" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "per esempio, ~/giochi:ro, xdg-pictures, ecc." #: src/models/persistent.js:37 msgid "Files" msgstr "File" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "per esempio .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Elenco di percorsi relativi alla home creati nella sandbox" #: src/models/portals.js:118 msgid "Background" msgstr "Background" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Può essere eseguito in background" #: src/models/portals.js:128 msgid "Notifications" msgstr "Notifiche" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Può inviare notifiche" #: src/models/portals.js:138 msgid "Microphone" msgstr "Microfono" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Può ascoltare il microfono" #: src/models/portals.js:148 msgid "Speakers" msgstr "Altoparlanti" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Può riprodurre suoni dagli altoparlanti" #: src/models/portals.js:158 msgid "Camera" msgstr "Fotocamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Può registrare video con la fotocamera" #: src/models/portals.js:168 msgid "Location" msgstr "Posizione" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Può accedere alla propria posizione" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Elenco di risorse concesse selettivamente all'applicazione" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Non supportato dalla versione installata di Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Richiede la versione 2 o successiva dell'archivio delle autorizzazioni" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "I dati del portale non sono stati ancora impostati" #: src/models/shared.js:39 msgid "Network" msgstr "Rete" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Comunicazioni intra-processi" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Elenco dei sottosistemi condivisi con il sistema" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "Sistema X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Sistema Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Fallback al sistema X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Server audio PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "Bus di sessione D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Bus di sistema D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Agente Secure Shell" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Smart card" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Sistema di stampa" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Directory degli agenti GPG" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Elenco di socket noti disponibili nella sandbox" #: src/models/variables.js:40 msgid "Variables" msgstr "Variabili" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "per esempio GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Elenco di variabili esportate nell'applicazione" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %B %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Versione" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Ultimo aggiornamento" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Runtime" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Questa non è un'opzione valida" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Mostra dettagli" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Mostra applicazione in un gestore software" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Nessun gestore software trovato" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Tutte le Applicazioni" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Modifiche che si applicano a tutte le applicazioni Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Versione Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Versione Portale" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Modifiche" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Aiuto" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Documentazione" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Tasti rapidi" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_Informazioni su Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Cambiato a livello globale" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Modificato dall'utente" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "questo percorso assoluto" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "questo percorso relativo alla home directory" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "tutte le configurazioni di sistema" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "tutte le librerie di sistema, eseguibili e dati statici" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "tutti i file di sistema" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "tutti i file utente" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "la directory desktop" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "la directory dei documenti" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "la directory degli scaricamenti" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "la directory della musica" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "la directory delle immagini" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "la directory pubblica" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "la directory dei video" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "la directory dei modelli" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "la directory di configurazione" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "la directory della cache" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "la directory dei dati" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "la directory di runtime" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Può leggere: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Può modificare e leggere: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Può creare, modificare e leggere: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Non può leggere: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Non può modificare o leggere: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Non può creare, modificare o leggere: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Rimuovere" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "I percorsi predefiniti non possono essere rimossi" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Ripristina" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Nessuna modifica apportata a questa applicazione" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Ripristina i permessi di questa applicazione" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", comprese le modifiche non effettuate con Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Generale" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Mostra acceleratori" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Mostra documentazione" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Mostra menù" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Scorciatoie da tastiera" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Esce" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigazione" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Sposta a sinistra" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Sposta in alto" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Sposta a destra" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Sposta in basso" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Applicazioni" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Trova" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Permessi" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Attiva/Disattiva" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Documentazione" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Trova successivo" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Trova precedente" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "I permessi sono stati reimpostati" #: src/widgets/window.js:99 msgid "_Undo" msgstr "A_nnulla" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Impossibile caricare le sostituzioni a causa di contenuti errati" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Aggiornato a causa di modifiche nelle installazioni Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Menù principale" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Non è stata trovata alcuna applicazione." flatseal-2.3.0/po/meson.build000066400000000000000000000000511467660615300161010ustar00rootroot00000000000000i18n.gettext('flatseal', preset: 'glib') flatseal-2.3.0/po/nb.po000066400000000000000000000367101467660615300147110ustar00rootroot00000000000000# Norwegian BokmÃ¥l translation for Flatseal # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # # 2023-2024 Nikolai Eugen Sandvik msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-19 18:39+0200\n" "Last-Translator: Nikolai Eugen Sandvik \n" "Language-Team: Norwegian Bokmal <>\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" "X-Generator: Poedit 3.4.2\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Administrer Flatpak-tillatelser" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "seal;sandbox;override;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal er et grafisk verktøy for Ã¥ gjennomgÃ¥ og endre tillatelser for dine " "Flatpak-applikasjoner." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Flatseal hovedvinduet" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal viser filsystemtillatelser" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal viser globale overstyringer" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Program-ID som sist ble valgt" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Ukjent" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Kommuniserer" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Eier" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Liste over velkjente navn pÃ¥ øktsbussen" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Liste over velkjente navn pÃ¥ systembussen" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU-akselerasjon" #: src/models/devices.js:44 msgid "Input devices" msgstr "Inndataenheter" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualisering" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Delt minne" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Alle enheter (f.eks. webkamera)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Liste over enheter tilgjengelig i sandkassen" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Utviklingssyskall (f.eks. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programmer fra andre arkitekturer" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Controller Area Network-buss" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Applikasjonens delte minne" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Liste over funksjoner tilgjengelige for applikasjonen" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Alle systemfiler" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Alle systembiblioteker, kjørbare filer og statiske data" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Alle systemkonfigurasjoner" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Alle brukerfiler" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Liste over tilgjengelige filsystemdeler for applikasjonen" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Andre filer" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "f.eks. ~/games:ro, xdg-pictures, osv" #: src/models/persistent.js:37 msgid "Files" msgstr "Filer" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "f.eks. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Liste over hjemmekatalog-relative stier opprettet i sandkassen" #: src/models/portals.js:118 msgid "Background" msgstr "Bakgrunn" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Kan kjøre i bakgrunnen" #: src/models/portals.js:128 msgid "Notifications" msgstr "Varsler" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Kan sende varsler" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Kan lytte til mikrofonen din" #: src/models/portals.js:148 msgid "Speakers" msgstr "Høyttalere" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Kan spille lyder gjennom høyttalerne dine" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Kan ta opp videoer med kameraet ditt" #: src/models/portals.js:168 msgid "Location" msgstr "Lokasjon" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Kan fÃ¥ tilgang til din lokasjon" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Liste over ressurser selektivt gitt til applikasjonen" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Ikke støttet av den installerte versjonen av Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Krever permission store versjon 2 eller nyere" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Portaldata er ikke satt opp enda" #: src/models/shared.js:39 msgid "Network" msgstr "Nettverk" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Interprosesskommunikasjon" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Liste over undersystemer delt med verts systemet" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11 vindusystem" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland vindusystem" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Fallback til X11 vindusystem" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio lydserver" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus øktbuss" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus systembuss" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Secure Shell-agent" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Smartkort" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Utskriftssystem" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-Agent-kataloger" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "Arv Wayland-socket" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Liste over velkjente sockets tilgjengelige i sandkassen" #: src/models/variables.js:40 msgid "Variables" msgstr "Variabler" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "f.eks. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Liste over variabler eksportert til applikasjonen" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e. %B %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Versjon" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Sist oppdatert" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Runtime" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Dette er ikke en gyldig valgmulighet" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Vis detaljer" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Vis applikasjonen i en programvarebehandler" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Ingen programvarebehandler funnet" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Alle Applikasjoner" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Endringer som gjelder for alle Flatpak-applikasjoner" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak Versjon" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Portal Versjon" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Endrer Sti" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Hjelp" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Dokumentasjon" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Tastatursnarveier" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_Om Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Endret globalt" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Endret av brukeren" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "denne absolutte stien" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "denne stien relativt til hjemmekatalogen" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "alle systemkonfigurasjoner" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "alle systembiblioteker, kjørbare filer og statiske data" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "alle systemfiler" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "alle brukerfiler" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "skrivebordskatalogen" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "dokumentkatalogen" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "nedlastingskatalogen" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "musikkatalogen" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "bildekatalogen" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "den offentlige katalogen" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "videokatalogen" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "malkatalogen" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "konfigurasjonskatalogen" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "bufferkatalogen" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "datakatalogen" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "runtime-katalogen" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Kan lese: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Kan endre og lese: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Kan opprette, endre og lese: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Kan ikke lese: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Kan ikke endre eller lese: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Kan ikke opprette, endre eller lese: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Ikke satt" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Standardstier kan ikke fjernes" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Tilbakestill" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Ingen endringer gjort for denne applikasjonen" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Tilbakestill denne applikasjonens tillatelser" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", inkludert endringer ikke gjort med Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Generelt" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Vis mnemonics" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Vis dokumentasjon" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Vis meny" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Tastatursnarveier" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Avslutt" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigasjon" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Flytt til venstre" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Flytt opp" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Flytt til høyre" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Flytt ned" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Applikasjoner" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Finn" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Tillatelser" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Veksle" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Dokumentasjon" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Finn neste" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Finn forrige" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Tillatelser har blitt tilbakestilt" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Angre" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Kan ikke laste inn endringer pÃ¥ grunn av feil innhold" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Oppdatert pÃ¥ grunn av endringer i Flatpak-installasjoner" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Hovedmeny" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Ingen applikasjoner funnet." flatseal-2.3.0/po/nl.po000066400000000000000000000374341467660615300147270ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-22 22:20+0200\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: \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" "X-Generator: Poedit 3.4.2\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Beheer Flatpak-bevoegdheden" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "seal;sandbox;rechten;bevoegdheden;machtigingen;permissies;flatpak;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal is een grafisch hulpmiddel om de bevoegdheden van elke Flatpak-" "toepassing te bekijken en aan te passen." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Hoofdvenster" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Pagina met bestandssysteemrechten" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Pagina met voorrangsregels" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "De laatstgekozen toepassings-id" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Onbekend" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Communiceert met" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Eigenaar van" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Lijst met bekende namen die beschikbaar zijn in de sessiebus" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Lijst met bekende namen die beschikbaar zijn in de systeembus" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Hardwareversnelling" #: src/models/devices.js:44 msgid "Input devices" msgstr "Invoerapparaten" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualisatie" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Gedeeld geheugen" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Alle apparaten (bijv. webcam)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Lijst met apparaten die beschikbaar zijn in de sandbox" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Systeemaanroepingen (bijv. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Toepassingen van andere architecturen" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Controller Area Network-bus" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Gedeeld toepassingsgeheugen" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Lijst met functies die de toepassing kan benutten" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Alle systeembestanden" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Alle systeembibliotheken, uitvoerbare bestanden en statische gegevens" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Alle systeemconfiguraties" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Alle gebruikersbestanden" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Lijst met bestandssysteem-subsets die de toepassing kan benutten" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Overige bestanden" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "bijv. ~/spellen:ro, xdg-pictures, enz." #: src/models/persistent.js:37 msgid "Files" msgstr "Bestanden" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "bijv. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "" "Lijst met relatieve locaties uit uw persoonlijke map die in de sandbox zijn " "gemaakt" #: src/models/portals.js:118 msgid "Background" msgstr "Achtergrond" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Uitvoeren op achtergrond" #: src/models/portals.js:128 msgid "Notifications" msgstr "Meldingen" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Mag meldingen tonen" #: src/models/portals.js:138 msgid "Microphone" msgstr "Microfoon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Mag uw microfoon gebruiken" #: src/models/portals.js:148 msgid "Speakers" msgstr "Luidsprekers" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Mag geluid afspelen via uw luidsprekers" #: src/models/portals.js:158 msgid "Camera" msgstr "Camera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Mag video's opnemen middels uw camera" #: src/models/portals.js:168 msgid "Location" msgstr "Locatie" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Mag uw locatie bepalen" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Lijst met functies die zijn toegekend aan de toepassing" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Niet ondersteund door de geïnstalleerde versie van Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Vereist toestemmingopslag versie 2 of nieuwer" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "De portaalgegevens zijn nog niet ingesteld" #: src/models/shared.js:39 msgid "Network" msgstr "Netwerk" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Procesuitwisselingscommunicatie" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Lijst met subsystemen die gedeeld zijn met het hostsysteem" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11-venstersysteem" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland-venstersysteem" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Terugvallen op X11-venstersysteem" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio-geluidsserver" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus-sessiebus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus-systeembus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Secure Shell-agent" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Smartcards" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Afdruksysteem" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-Agent-mappen" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "Waylandsocket gebruiken" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Lijst met bekende sockets die beschikbaar zijn in de sandbox" #: src/models/variables.js:40 msgid "Variables" msgstr "Variabelen" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "bijv. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Lijst met variabelen die naar de toepassing zijn geëxporteerd" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %B %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Versie" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Laatst bijgewerkt op" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Uitvoerbaar bestand" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Dit is geen geldige optie" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "Detail_s tonen" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Toon de toepassing in een softwarebeheerder" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Er is geen softwarebeheerder aangetroffen." #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Alle toepassingen" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Wijzigingen die van toepassing zijn op alle Flatpak-toepassingen" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak-versie" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Portaalversie" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Past de locatie aan" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Hulp" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Documentatie" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "Snel_toetsen" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "Over Fl_atseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Globaal gewijzigd" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Door de gebruiker gewijzigd" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "deze absolute locatie" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "deze locatie ten opzichte van de basismap" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "alle systeemconfiguraties" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "alle systeembibliotheken, uitvoerbare bestanden en statische gegevens" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "alle systeembestanden" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "alle gebruikersbestanden" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "de bureaubladmap" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "de documentenmap" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "de downloadmap" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "de muziekmap" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "de afbeeldingenmap" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "de openbare map" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "de map met video's" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "de map met sjablonen" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "de configuratiemap" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "de cachemap" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "de gegevensmap" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "de werkmap" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Mag uitlezen: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Mag wijzigen en uitlezen: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Mag maken, wijzigen en uitlezen: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Mag niet uitlezen: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Mag niet wijzigen of uitlezen: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Mag niet maken, wijzigen of uitlezen: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Verwijderen" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Standaardlocaties kunnen niet worden verwijderd" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "Standaa_rdwaarden" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Geen wijzigingen aangebracht aan deze toepassing" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Herstel de toepassingsbevoegdheden" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", inclusief wijzigingen die niet zijn aangebracht door Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Algemeen" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Sneltoetsen tonen" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Documentatie tonen" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Menu tonen" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Sneltoetsen" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Afsluiten" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigatie" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Naar links verplaatsen" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Omhoog verplaatsen" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Naar rechts verplaatsen" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Omlaag verplaatsen" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Toepassingen" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Zoeken" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Bevoegdheden" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Aan/Uit" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Documentatie" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Volgende zoeken" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Vorige zoeken" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "De bevoegdheden zijn hersteld" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Ongedaan maken" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "De voorrangsregels kunnen niet worden geladen wegens onjuiste inhoud" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Vernieuwd wegens wijzigingen in Flatpakinstallaties" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Hoofdmenu" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Er zijn geen toepassingen aangetroffen." flatseal-2.3.0/po/pl.po000066400000000000000000000400501467660615300147150ustar00rootroot00000000000000# Polish translation for Flatseal # Copyright (C) 2021 THE Flatseal's COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # # BartÅ‚omiej Garbiec , 2021. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-01-22 21:17+0100\n" "Last-Translator: \n" "Language-Team: \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<12 " "|| n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.4\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "ZarzÄ…dzaj uprawnieniami Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "seal;sandbox;override;piaskownica;nadpisz;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal jest narzÄ™dziem do graficznego zarzÄ…dzania uprawnieniami aplikacji " "Flatpak." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Główne okno Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal pokazujÄ…cy uprawnienia systemu plików" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal pokazujÄ…cy ogólnie nadpisane ustawienia" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Identyfikator aplikacji, który zostaÅ‚ wybrany jako ostatni" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Nieznane" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Komunikacja" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Przynależność" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "" "Lista dobrze znanych nazw w magistrali komunikacyjnej sesji (session bus)" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "" "Lista dobrze znanych nazw w magistrali komunikacyjnej systemu (system bus)" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Wspomaganie przez GPU" #: src/models/devices.js:44 msgid "Input devices" msgstr "UrzÄ…dzenia wejÅ›ciowe" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Wirtualizacja" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Pamięć wspólna" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Wszystkie urzÄ…dzenia (np. kamera internetowa)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Lista urzÄ…dzeÅ„ dostÄ™pnych w piaskownicy" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Programistyczne wywoÅ‚ania systemowe (np. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programy dla innych architektur" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Magistrala CAN" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Pamięć współdzielona dla aplikacji" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Lista możliwych ustawieÅ„ dla aplikacji" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Wszystkie pliki systemowe" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Wszystkie biblioteki systemowe, pliki wykonywalne oraz dane statyczne" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Wszystkie konfiguracje systemowe" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Wszystkie pliki użytkownika" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Lista poÅ‚ożeÅ„ dostÄ™pnych dla aplikacji" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "PozostaÅ‚e pliki" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "np. ~games:ro, xdg-pictures, itp." #: src/models/persistent.js:37 msgid "Files" msgstr "Pliki" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "np. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Lista poÅ‚ożeÅ„ w Katalogu domowym dostÄ™pnych dla aplikacji" #: src/models/portals.js:118 msgid "Background" msgstr "DziaÅ‚anie w tle" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Może dziaÅ‚ać w tle" #: src/models/portals.js:128 msgid "Notifications" msgstr "Powiadomienia" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Może pokazywać powiadomienia" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Może używać mikrofonu" #: src/models/portals.js:148 msgid "Speakers" msgstr "GÅ‚oÅ›niki" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Może używać gÅ‚oÅ›ników do odtwarzania dźwiÄ™ków" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Może nagrywać filmy za pomocÄ… aparatu" #: src/models/portals.js:168 msgid "Location" msgstr "Lokalizacja" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Może uzyskać dostÄ™p do Twojej lokalizacji" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Lista zasobów selektywnie przyznanych aplikacji" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Niewspierane przez aktualnie zainstalowanÄ… wersjÄ™ Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Wymaga magazynu uprawnieÅ„ w wersji 2 lub nowszej" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Dane portalu nie zostaÅ‚y jeszcze skonfigurowane" #: src/models/shared.js:39 msgid "Network" msgstr "Sieć" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Komunikacja miÄ™dzy procesami" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Lista podsystemów udostÄ™pnionych przez system operacyjny" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "System wyÅ›wietlania X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "System wyÅ›wietlania Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Użycie X11 w przypadku problemów" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Serwer dźwiÄ™ku PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus sesji" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus systemu" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Agent SSH" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Karta mikroprocesorowa" #: src/models/sockets.js:93 msgid "Printing system" msgstr "ObsÅ‚uga drukowania" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Katalogi agenta GPG" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "Dziedzicz gniazdo Waylanda" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Lista dobrze znanych gniazd dostÄ™pnych w piaskownicy" #: src/models/variables.js:40 msgid "Variables" msgstr "Zmienne" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "np. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Lista zmiennych przekazanych do aplikacji" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%B %e, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Wersja" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Ostatnia aktualizacja" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Åšrodowisko" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "To nie jest poprawna operacja" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_WyÅ›wietl szczegóły" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "WyÅ›wietl w menedżerze oprogramowania" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Nie znaleziono menedżera oprogramowania" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Wszystkie Aplikacje" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Zmiany, które dotyczÄ… wszystkich aplikacji Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Wersja Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Wersja Portalu" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Modyfikacje" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Pomoc" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Dokumentacja" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_O Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Zmieniono globalnie" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Zmienione przez użytkownika" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "poÅ‚ożenie bezpoÅ›rednie (bezwzglÄ™dne)" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "poÅ‚ożenie wzglÄ™dem Katalogu domowego" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "wszystkie konfiguracje systemowe" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "wszystkie biblioteki systemowe, pliki wykonywalne oraz dane statyczne" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "wszystkie pliki systemowe" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "wszystkie pliki użytkownika" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "poÅ‚ożenie folderu pulpitu" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "poÅ‚ożenie folderu Dokumenty" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "poÅ‚ożenie folderu Pobrane" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "poÅ‚ożenie folderu Muzyka" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "poÅ‚ożenie folderu Obrazy" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "poÅ‚ożenie folderu Publiczny" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "poÅ‚ożenie folderu Wideo" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "poÅ‚ożenie folderu Szablony" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "poÅ‚ożenie plików konfiguracyjnych" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "poÅ‚ożenie pamiÄ™ci cache" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "poÅ‚ożenie danych" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "poÅ‚ożenie Å›rodowiska uruchumieniowego" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Może czytać: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Może czytać i modyfikować: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Może tworzyć, czytać i modyfikować: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Nie mogÄ™ przeczytać: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Nie można go modyfikować ani czytać: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Nie może tworzyć, modyfikować ani czytać: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Nieoprawny" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "DomyÅ›lne Å›cieżki nie mogÄ… być usuniÄ™te" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Resetuj" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Nie dokonano zmian dla tej aplikacji" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Resetuj uprawnienia tej aplikacji" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", w tym zmian dokonanych we Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Ogólny" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Pokaż mnemoniki" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Pokaż dokumentacjÄ™" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Pokaż menu" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Skróty klawiszowe" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Wyjdź" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Nawigacja" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "PrzesuÅ„ w lewo" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "PrzesuÅ„ w górÄ™" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "PrzesuÅ„ w prawo" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "PrzesuÅ„ w dół" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Aplikacje" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Znajdź" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Uprawnienia" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Przełącz" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Dokumentacja" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Znajdź nastÄ™pny wynik" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Znajdź poprzedni wynik" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Uprawnienia zostaÅ‚y zresetowane" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Cofnij" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Nie można zaÅ‚adować zmian z powodu nieprawidÅ‚owej zawartoÅ›ci" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "OdÅ›wieżono ze wzglÄ™du na zmiany w instalacjach Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Menu główne" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Nie znaleziono programów." flatseal-2.3.0/po/pt_BR.po000066400000000000000000000377421467660615300153260ustar00rootroot00000000000000# Portuguese translations for flatseal package. # Copyright (C) 2020 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Automatically generated, 2020. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2020-02-05 14:06-0300\n" "Last-Translator: Automatically generated\n" "Language-Team: none\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" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Um gerenciador de permissões para Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "O Flatseal é um utilitário gráfico para revisar e modificar permissões " "básicas de seus aplicativos Flatpak." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "A janela principal do Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal mostrando permissões do sistema de arquivos" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal mostrando alterações globais" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "ID do aplicativo que foi selecionado pela última vez" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Desconhecida" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Fala" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Apropria" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Lista de nomes conhecidos no barramento de sessão" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Lista de nomes conhecidos no barramento do sistema" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "Aceleração de GPU" #: src/models/devices.js:44 msgid "Input devices" msgstr "Dispositivos de entrada" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualização" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Memória compartilhada" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Todos os dispositivos (p. ex. webcam)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Lista de dispositivos disponíveis na sandbox" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Chamadas do sistema de desenvolvimento (p. ex. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Programas de outras arquiteturas" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Barramento de rede da área do controlador" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Memória compartilhada por aplicativo" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Lista de recursos disponíveis para o aplicativo" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Todos os arquivos do sistema" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Todas as bibliotecas, executáveis e dados estáticos" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Todas as configurações do sistema" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Todos os arquivos do usuário" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Lista de arquivos disponíveis para o aplicativo" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Outros arquivos" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "p. ex. ~/jogos:ro, xdg-pictures, etc" #: src/models/persistent.js:37 msgid "Files" msgstr "Arquivos" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "p. ex. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Lista de caminhos relativos ao diretório do usuário criados na sandbox" #: src/models/portals.js:118 msgid "Background" msgstr "Segundo plano" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Pode ser executado em segundo plano" #: src/models/portals.js:128 msgid "Notifications" msgstr "Notificações" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Pode enviar notificações" #: src/models/portals.js:138 msgid "Microphone" msgstr "Microfone" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Pode ouvir seu microfone" #: src/models/portals.js:148 msgid "Speakers" msgstr "Alto-falantes" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Pode reproduzir sons para seus alto-falantes" #: src/models/portals.js:158 msgid "Camera" msgstr "Câmera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Pode gravar vídeos com sua câmera" #: src/models/portals.js:168 msgid "Location" msgstr "Localização" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Pode acessar sua localização" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Lista de recursos concedidos seletivamente ao aplicativo" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Não é suportado pela versão instalada do Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Requer permissão de armazenamento versão 2 ou mais recente" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Os dados do portal ainda não foram configurados" #: src/models/shared.js:39 msgid "Network" msgstr "Rede" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Comunicações entre processos" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Lista de subsistemas compartilhados com o sistema" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "Sistema de janelas X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Sistema de janelas Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Sistema de janelas X11 como substituto" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Servidor de som PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "Barramento de sessão D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Barramento do sistema D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Agente Shell seguro" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Cartões inteligentes" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Sistema de impressão" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Diretórios do GPG-Agent" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "Herda o soquete do Wayland" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Lista de soquetes conhecidos disponíveis na sandbox" #: src/models/variables.js:40 msgid "Variables" msgstr "Variáveis" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "p. ex. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Lista de variáveis exportadas para o aplicativo" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e de %B de %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Versão" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Ultima atualização" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Biblioteca de execução" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Esta não é uma opção válida" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Mostrar detalhes" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Mostrar aplicativo em um gerenciador de software" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Nenhum gerenciador de software encontrado" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Todos os Aplicativos" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Alterações que se aplicam a todos os aplicativos Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Versão Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Versão do Portal" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Modificações" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Ajuda" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Documentação" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "Atalhos do _teclado" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_Sobre Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Alterado globalmente" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Alterado pelo usuário" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "esse caminho absoluto" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "esse caminho em relação ao diretório do usuário" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "todas as configurações do sistema" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "todas as bibliotecas, executáveis e dados estáticos" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "todos os arquivos do sistema" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "todos os arquivos do usuário" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "o diretório da área de trabalho" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "o diretório de documentos" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "o diretório de download" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "o diretório de música" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "o diretório de imagens" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "o diretório público" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "o diretório de vídeos" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "o diretório de modelos" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "o diretório de configuração" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "o diretório de cache" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "o diretório de dados" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "o diretório de tempo de execução" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Pode ler: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Pode modificar e ler: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Pode criar, modificar e ler: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Não pode ler: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Não pode modificar ou ler: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Não pode criar, modificar ou ler: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Desalocar" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Caminhos padrão não podem ser removidos" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Restaurar" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Nenhuma alteração feita neste aplicativo" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Restaurar as permissões deste aplicativo" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", incluindo alterações não feitas com o Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Em geral" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Mostrar mnemônicos" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Mostrar documentação" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Mostrar menu" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Atalhos do teclado" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Sair" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navegação" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Mover para a esquerda" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Mover para cima" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Mover para a direita" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Mova para baixo" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Aplicativos" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Buscar" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Permissões" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Mudar" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Documentação" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Encontre o próximo" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Encontrar anterior" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Permissões restauradas" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Desfaz" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Não é possível carregar alterações devido a conteúdo incorreto" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Atualizado devido a mudanças nas instalações do Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Menu principal" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Nenhum aplicativo encontrado." flatseal-2.3.0/po/ru.po000066400000000000000000000451301467660615300147340ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # FIRST AUTHOR , YEAR. # BigmenPixel < >, 2021. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-01-18 17:06+0300\n" "Last-Translator: Aleksandr Melman \n" "Language-Team: Russian < >\n" "Language: ru\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" "X-Generator: Poedit 3.4.2\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Управление разрешениÑми Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "seal;sandbox;override;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal - графичеÑÐºÐ°Ñ ÑƒÑ‚Ð¸Ð»Ð¸Ñ‚Ð° Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра и модификации разрешений ваших " "Flatpak приложений." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Главное окно Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal показывает права доÑтупа к файловой ÑиÑтеме" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal показывает глобальные изменениÑ" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Идентификатор приложениÑ, который был выбран поÑледним" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "ÐеизвеÑтно" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Переговоры" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Владельцы" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "СпиÑок извеÑтных имен в ÑеÑÑионной шине" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "СпиÑок извеÑтных имен в ÑиÑтемной шине" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU уÑкорение" #: src/models/devices.js:44 msgid "Input devices" msgstr "УÑтройÑтва ввода" #: src/models/devices.js:51 msgid "Virtualization" msgstr "ВиртуализациÑ" #: src/models/devices.js:58 msgid "Shared memory" msgstr "РаÑпределÑÐµÐ¼Ð°Ñ Ð¿Ð°Ð¼Ñть" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Ð’Ñе уÑтройÑтва (пр. веб-камера)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "СпиÑок вÑех уÑтройÑтв, доÑтупных в пеÑочнице" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "СиÑтемные вызовы разработки (пр. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Программы Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… архитектур" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Шина Ñети контроллеров" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "РаÑпределÑÐµÐ¼Ð°Ñ Ð¿Ð°Ð¼Ñть приложениÑ" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "СпиÑок функций, доÑтупных приложению" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Ð’Ñе ÑиÑтемные файлы" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Ð’Ñе ÑиÑтемные библиотеки, иÑполнÑемые файлы и ÑтатичеÑкие данные" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Ð’Ñе конфигурации ÑиÑтемы" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Ð’Ñе пользовательÑкие файлы" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "СпиÑок подмножеÑтв файловой ÑиÑтемы, доÑтупных приложению" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Другие файлы" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "пр. ~/games:ro, xdg-pictures, и прочее" #: src/models/persistent.js:37 msgid "Files" msgstr "Файлы" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "пр. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "СпиÑок отноÑительных путей к домашней папке, Ñозданных в пеÑочнице" #: src/models/portals.js:118 msgid "Background" msgstr "Фон" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Может работать в фоне" #: src/models/portals.js:128 msgid "Notifications" msgstr "УведомлениÑ" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Может отправлÑть уведомлениÑ" #: src/models/portals.js:138 msgid "Microphone" msgstr "Микрофон" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Может иÑпользовать ваш микрофон" #: src/models/portals.js:148 msgid "Speakers" msgstr "Динамики" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Может проигрывать звук в ваших динамиках" #: src/models/portals.js:158 msgid "Camera" msgstr "Камера" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Может запиÑывать видео Ñ Ð²Ð°ÑˆÐµÐ¹ камеры" #: src/models/portals.js:168 msgid "Location" msgstr "МеÑтоположение" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Может получить доÑтуп к вашему меÑтоположению" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "СпиÑок реÑурÑов, выборочно предоÑтавленных приложению" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Ðе поддерживаетÑÑ ÑƒÑтановленной верÑией Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "ТребуетÑÑ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ разрешений верÑии 2 или новее" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Данные портала еще не наÑтроены" #: src/models/shared.js:39 msgid "Network" msgstr "Сеть" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "МежпроцеÑÑные коммуникации" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "СпиÑок подÑиÑтем, ÑовмеÑтно иÑпользуемых Ñ Ñ…Ð¾ÑÑ‚-ÑиÑтемой" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "ÐžÐºÐ¾Ð½Ð½Ð°Ñ ÑиÑтема X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "ÐžÐºÐ¾Ð½Ð½Ð°Ñ ÑиÑтема Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Возврат к оконной ÑиÑтеме X11" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Звуковой Ñервер PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "СеÑÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑˆÐ¸Ð½Ð° D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ ÑˆÐ¸Ð½Ð° D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "SSH агент" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Смарт-карты" #: src/models/sockets.js:93 msgid "Printing system" msgstr "СиÑтема печати" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Каталоги GPG-агента" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "ИÑпользование Wayland Ñокета" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "СпиÑок извеÑтных Ñокетов, доÑтупных в пеÑочнице" #: src/models/variables.js:40 msgid "Variables" msgstr "Переменные" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "пр. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "СпиÑок переменных, ÑкÑпортируемых в приложение" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %B, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "ВерÑиÑ" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "ПоÑледнее обновление" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Среда иÑполнениÑ" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Это недопуÑтимый вариант" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Показать подробноÑти" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Показать приложение в менеджере Ñофта" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Менеджер Ñофта не найден" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Ð’Ñе приложениÑ" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "ИзменениÑ, которые применÑÑŽÑ‚ÑÑ ÐºÐ¾ вÑем приложениÑм Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "ВерÑÐ¸Ñ Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "ВерÑÐ¸Ñ Ð¿Ð¾Ñ€Ñ‚Ð°Ð»Ð°" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Модификации" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Справка" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_ДокументациÑ" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Комбинации клавиш" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_О приложении" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Изменено глобально" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Изменено пользователем" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "Ñто абÑолютный путь" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "Ñто путь отноÑительно домашней папки" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "вÑе конфигурации ÑиÑтемы" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "вÑе ÑиÑтемные библиотеки, иÑполнÑемые файлы и ÑтатичеÑкие данные" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "вÑе ÑиÑтемные файлы" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "вÑе пользовательÑкие файлы" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "каталог рабочего Ñтола" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "каталог документов" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "каталог загрузок" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "каталог музыки" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "каталог изображений" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "общедоÑтупный каталог" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "каталог видео" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "каталог шаблонов" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "каталог конфигурационных файлов" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "каталог кеша" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "каталог данных" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "каталог Ñреды иÑполнениÑ" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Может читать: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Может редактировать и читать: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Может Ñоздавать, редактировать и читать: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Ðе может читать: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Ðе может редактировать и читать: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Ðе может Ñоздавать, редактировать и читать: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Убрать" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Каталоги по умолчанию не могут быть удалены" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_ВоÑÑтановить" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Ð’ Ñто приложение не было внеÑено никаких изменений" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "ВоÑÑтановить Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, не внеÑенные Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Общие" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Показать мнемонику" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Показать Ñправку" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Открыть меню" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Комбинации клавиш" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Закрыть приложение" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "ÐавигациÑ" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "ПеремеÑтить влево" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "ПеремеÑтить вверх" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "ПеремеÑтить вправо" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "ПеремеÑтить вниз" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "ПриложениÑ" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Ðайти" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "РазрешениÑ" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Переключить" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "ДокументациÑ" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Следующий результат" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Предыдущий результат" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Ð Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ воÑÑтановлены" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Отменить" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Ðевозможно загрузить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·-за неправильного ÑодержаниÑ" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Обновлено в ÑвÑзи Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñми в уÑтановках Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Главное меню" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ найдены." flatseal-2.3.0/po/sv.po000066400000000000000000000370531467660615300147430ustar00rootroot00000000000000# Swedish translation for Flatseal. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Ã…ke Engelbrektson , 2020-2024. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-19 09:22+0200\n" "Last-Translator: Ã…ke Engelbrektson \n" "Language-Team: \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" "X-Generator: Poedit 3.4.4\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "En behörighetshanterare för Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "seal;sandbox;undantag" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal är ett grafiskt verktyg för att granska och ändra grundläggande " "behörigheter för dina Flatpak-program." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Flatseals huvudfönster" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal visar filsystemets behörigheter" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal visar systemövergripande undantag" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Applikations-ID som senast valdes" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Okänd" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Talar" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Äger" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Lista över välkända namn pÃ¥ sessionsbussen" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Lista över välkända namn pÃ¥ systembussen" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU-acceleration" #: src/models/devices.js:44 msgid "Input devices" msgstr "Inmatningsenheter" #: src/models/devices.js:51 msgid "Virtualization" msgstr "Virtualisering" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Delat minne" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Alla enheter (t.ex. webbkamera)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Lista över enheter som är tillgängliga i sandlÃ¥dan" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "Development syscalls (t.ex. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Program frÃ¥n andra arkitekturer" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Controller Area Network bus" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Delat programminne" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Lista över funktioner som är tillgängliga för programmet" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Alla systemfiler" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Alla systemets bibliotek, exekverbara och statisk data" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Alla systemkonfigurationer" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Alla användarfiler" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "" "Lista över filsystemets undergrupper som är tillgängliga för programmet" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Andra filer" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "t.ex. ~/games:ro, xdg-pictures, etc" #: src/models/persistent.js:37 msgid "Files" msgstr "Filer" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "t.ex. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Lista över sökvägar, relativt hemkatalogen, som skapats i sandlÃ¥dan" #: src/models/portals.js:118 msgid "Background" msgstr "Bakgrund" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Kan köras i bakgrunden" #: src/models/portals.js:128 msgid "Notifications" msgstr "Avisering" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Kan skicka avisering" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Kan lyssna pÃ¥ din mikrofon" #: src/models/portals.js:148 msgid "Speakers" msgstr "Högtalare" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Kan spela upp ljud i dina högtalare" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Kan spela in video med din kamera" #: src/models/portals.js:168 msgid "Location" msgstr "Plats" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Har tillgÃ¥ng till din platsinformation" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Lista över resurser som selektivt tilldelats programmet" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Stöds inte av den installerade Flatpak-versionen" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "Kräver lagringsbehörighet version 2 eller senare" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Portdata har inte ställts in ännu" #: src/models/shared.js:39 msgid "Network" msgstr "Nätverk" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Kommunikation mellan processer" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Lista över undersystem som delas med värdsystemet" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11 fönstersystem" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland fönstersystem" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Fall tillbaka pÃ¥ X11 fönstersystem" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio ljudserver" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus session bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus system bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Secure Shell agent" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Smartkort" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Utskriftssystem" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-agentmappar" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "Ärv Wayland-socket" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Lista över välkända uttag som finns i sandlÃ¥dan" #: src/models/variables.js:40 msgid "Variables" msgstr "Variabler" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "t.ex. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Lista över varibler som som exporterats till programmet" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %B %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Version" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Senast uppdaterad" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Körtid" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Detta är inte ett giltigt alternativ" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Visa detaljerad info" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Visa program i en programhanterare" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Ingen programhanterare hittades" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Alla program" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Ändringar som tillämpas pÃ¥ alla Flatpak-program" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak-version" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Portalversion" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Ändrar sökväg" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Hjälp" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Dokumentation" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "Tangentbords_genvägar" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_Om Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Ändrat systemövergripande" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Ändrat av användaren" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "Denna absoluta sökväg" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "Denna sökväg relativt till hemkatalogen" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "Alla systemkonfigurationer" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "Alla systemets bibliotek, exekverbara och statisk data" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "Alla systemfiler" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "Alla användarfiler" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "Skrivbord" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "Dokument" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "Nedladdningar" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "Musik" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "Bilder" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "Publikt" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "Video" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "Mallar" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "Konfigurationsmappen" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "Cachemappen" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "Datamappen" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "Körtidsmappen" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Kan läsa: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Kan ändra och läsa: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Kan skapa, ändra och läsa: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Kan inte läsa: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Kan inte ändra eller läsa: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Kan inte skapa, ändra eller läsa: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Avlägsna" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Standardsökvägar kan inte tas bort" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Ã…terställ" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Inga ändringar gjorda för det här programmet" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Ã…terställ det här programmets behörigheter" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", inklusive ändringar som inte gjorts med Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Allmänt" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Visa minnestekniker" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Visa dokumentation" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Visa menyn" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Tangentbordsgenvägar" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Avsluta" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Navigation" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Flytta Ã¥t vänster" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Flytta upp" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "Flytta Ã¥t höger" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "Flytta ner" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Program" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Sök" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Rättigheter" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Växla" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Dokumentation" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Sök nästa" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Sök föregÃ¥ende" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Behörigheter har Ã¥terställts" #: src/widgets/window.js:99 msgid "_Undo" msgstr "Ã…_ngra" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Kan inte ladda Ã¥sidosättningar pÃ¥ grund av felaktigt innehÃ¥ll" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Uppdaterad pÃ¥ grund av ändringar i Flatpak-installationer" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Huvudmeny" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Inga program hittades." flatseal-2.3.0/po/ta.po000066400000000000000000000545571467660615300147270ustar00rootroot00000000000000# Flatseal- Tamil translation. # Copyright (C) 2024 THE Flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # K.B.Dharun Krishna (kbdharun) , 2022 - 2024. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-21 21:51+0530\n" "Last-Translator: K.B.Dharun Krishna \n" "Language-Team: \n" "Language: ta\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 3.5\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "பிளாடà¯à®ªà®¾à®•௠அனà¯à®®à®¤à®¿à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "à®®à¯à®¤à¯à®¤à®¿à®°à¯ˆ;சாணà¯à®Ÿà¯à®ªà®¾à®•à¯à®¸à¯;பà¯à®±à®•à¯à®•ணிபà¯à®ªà¯;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your Flatpak " "applications." msgstr "" "பிளாடà¯à®šà¯€à®²à¯ எனà¯à®ªà®¤à¯ உஙà¯à®•ள௠பிளாடà¯à®ªà®¾à®•௠பயனà¯à®ªà®¾à®Ÿà¯à®•ளின௠அனà¯à®®à®¤à®¿à®•ளை மதிபà¯à®ªà®¾à®¯à¯à®µà¯ செயà¯à®µà®¤à®±à¯à®•à¯à®®à¯ " "மாறà¯à®±à®¿à®¯à®®à¯ˆà®ªà¯à®ªà®¤à®±à¯à®•à¯à®®à¯ ஒர௠வரைகலைப௠பயனà¯à®ªà®¾à®Ÿà®¾à®•à¯à®®à¯." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Flatseal பிரதான சாளரமà¯" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "கோபà¯à®ªà¯ à®®à¯à®±à¯ˆà®®à¯ˆ அனà¯à®®à®¤à®¿à®•ளைக௠காடà¯à®Ÿà¯à®®à¯ Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "உலகளாவிய மேலெழà¯à®¤à®²à¯ˆà®•௠காடà¯à®Ÿà¯à®®à¯ Flatseal" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "கடைசியாக தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ பயனà¯à®ªà®¾à®Ÿà¯ à®à®Ÿà®¿" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "தெரியாததà¯" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "பேசà¯à®šà¯à®•à¯à®•ளà¯" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "சொநà¯à®¤à®®à®¾à®• உளà¯à®³à®¤à¯" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "அமரà¯à®µà¯ பேரà¯à®¨à¯à®¤à®¿à®²à¯ நனà¯à®•௠அறியபà¯à®ªà®Ÿà¯à®Ÿ பெயரà¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "சிஸà¯à®Ÿà®®à¯ பஸà¯à®¸à®¿à®²à¯ நனà¯à®•௠அறியபà¯à®ªà®Ÿà¯à®Ÿ பெயரà¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU à®®à¯à®Ÿà¯à®•à¯à®•à®®à¯" #: src/models/devices.js:44 msgid "Input devices" msgstr "உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ சாதனஙà¯à®•ளà¯" #: src/models/devices.js:51 msgid "Virtualization" msgstr "மெயà¯à®¨à®¿à®•ராகà¯à®•à®®à¯" #: src/models/devices.js:58 msgid "Shared memory" msgstr "பகிரà¯à®¨à¯à®¤ நினைவகமà¯" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "அனைதà¯à®¤à¯ சாதனஙà¯à®•ளà¯à®®à¯ (எ.கா. வெபà¯à®•ேமà¯)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "சாணà¯à®Ÿà¯à®ªà®¾à®•à¯à®¸à®¿à®²à¯ கிடைகà¯à®•à¯à®®à¯ சாதனஙà¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "டெவலபà¯à®®à¯†à®£à¯à®Ÿà¯ syscals (எ.கா. ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "பிற கடà¯à®Ÿà®¿à®Ÿà®•à¯à®•லைகளிலிரà¯à®¨à¯à®¤à¯ நிரலà¯à®•ளà¯" #: src/models/features.js:51 msgid "Bluetooth" msgstr "பà¯à®³à¯‚டூதà¯" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "கனà¯à®Ÿà¯à®°à¯‹à®²à®°à¯ à®à®°à®¿à®¯à®¾ நெடà¯à®µà¯Šà®°à¯à®•௠பஸà¯" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "பயனà¯à®ªà®¾à®Ÿà¯ பகிரபà¯à®ªà®Ÿà¯à®Ÿ நினைவகமà¯" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®±à¯à®•௠கிடைகà¯à®•à¯à®®à¯ à®…à®®à¯à®šà®™à¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/filesystems.js:37 msgid "All system files" msgstr "அனைதà¯à®¤à¯ கணினி கோபà¯à®ªà¯à®•ளà¯" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "அனைதà¯à®¤à¯ கணினி நூலகஙà¯à®•ளà¯, இயஙà¯à®•கà¯à®•ூடியவை மறà¯à®±à¯à®®à¯ நிலையான தரவà¯" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "அனைதà¯à®¤à¯ அமைபà¯à®ªà¯ கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà¯à®•ளà¯" #: src/models/filesystems.js:58 msgid "All user files" msgstr "அனைதà¯à®¤à¯ பயனர௠கோபà¯à®ªà¯à®•ளà¯" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®±à¯à®•௠கிடைகà¯à®•à¯à®®à¯ கோபà¯à®ªà¯ à®®à¯à®±à¯ˆà®®à¯ˆ தà¯à®£à¯ˆà®•à¯à®•à¯à®´à¯à®•à¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "பிற கோபà¯à®ªà¯à®•ளà¯" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "எ.கா. ~/games:ro, xdg-pictures, à®®à¯à®¤à®²à®¿à®¯à®©" #: src/models/persistent.js:37 msgid "Files" msgstr "கோபà¯à®ªà¯à®•ளà¯" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "எ.கா. .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "சாணà¯à®Ÿà¯à®ªà®¾à®•à¯à®¸à®¿à®²à¯ உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ ஹோமà¯à®Ÿà®¿à®°à¯-உறவினர௠பாதைகளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/portals.js:118 msgid "Background" msgstr "பினà¯à®©à®£à®¿" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "பினà¯à®©à®£à®¿à®¯à®¿à®²à¯ இயகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯" #: src/models/portals.js:128 msgid "Notifications" msgstr "அறிவிபà¯à®ªà¯à®•ளà¯" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "அறிவிபà¯à®ªà¯à®•ளை அனà¯à®ªà¯à®ª à®®à¯à®Ÿà®¿à®¯à¯à®®à¯" #: src/models/portals.js:138 msgid "Microphone" msgstr "ஒலிவாஙà¯à®•ி" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "உஙà¯à®•ள௠ஒலிவாஙà¯à®•ியைக௠கேடà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯" #: src/models/portals.js:148 msgid "Speakers" msgstr "ஒலிபெரà¯à®•à¯à®•ிகளà¯" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "உஙà¯à®•ள௠ஸà¯à®ªà¯€à®•à¯à®•à®°à¯à®•ளில௠ஒலியை இயகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯" #: src/models/portals.js:158 msgid "Camera" msgstr "கேமரா" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "உஙà¯à®•ள௠கேமரா மூலம௠வீடியோகà¯à®•ளை பதிவ௠செயà¯à®¯à®²à®¾à®®à¯" #: src/models/portals.js:168 msgid "Location" msgstr "இரà¯à®ªà¯à®ªà®¿à®Ÿà®®à¯" #: src/models/portals.js:170 msgid "Can access your location" msgstr "உஙà¯à®•ள௠இரà¯à®ªà¯à®ªà®¿à®Ÿà®¤à¯à®¤à¯ˆ அணà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®±à¯à®•௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ ஆதாரஙà¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "பிளாடà¯à®ªà®¾à®•௠இன௠நிறà¯à®µà®ªà¯à®ªà®Ÿà¯à®Ÿ பதிபà¯à®ªà®¾à®²à¯ ஆதரிகà¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "அனà¯à®®à®¤à®¿ ஸà¯à®Ÿà¯‹à®°à¯ பதிபà¯à®ªà¯ 2 அலà¯à®²à®¤à¯ பà¯à®¤à®¿à®¯à®¤à¯ தேவை" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "போரà¯à®Ÿà®²à¯ தரவ௠இனà¯à®©à¯à®®à¯ அமைகà¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" #: src/models/shared.js:39 msgid "Network" msgstr "வலைபà¯à®ªà®¿à®©à¯à®©à®²à¯" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "இடை-செயலà¯à®®à¯à®±à¯ˆ தொடரà¯à®ªà¯à®•ளà¯" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "ஹோஸà¯à®Ÿà¯ சிஸà¯à®Ÿà®¤à¯à®¤à¯à®Ÿà®©à¯ பகிரபà¯à®ªà®Ÿà¯à®Ÿ தà¯à®£à¯ˆ அமைபà¯à®ªà¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11 சாளர அமைபà¯à®ªà¯" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "வேலேணà¯à®Ÿà¯ சாளர அமைபà¯à®ªà¯" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "X11 விணà¯à®Ÿà¯‹à®¯à®¿à®™à¯ சிஸà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•௠வீழà¯à®šà¯à®šà®¿ திரà¯à®®à¯à®ªà®µà¯à®®à¯" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "பலà¯à®¸à¯ ஆடியோ ஒலி சேவையகமà¯" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus அமரà¯à®µà¯ பேரà¯à®¨à¯à®¤à¯" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus சிஸà¯à®Ÿà®®à¯ பஸà¯" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "பாதà¯à®•ாபà¯à®ªà®¾à®© ஷெல௠à®à®œà¯†à®©à¯à®Ÿà¯" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "ஸà¯à®®à®¾à®°à¯à®Ÿà¯ காரà¯à®Ÿà¯à®•ளà¯" #: src/models/sockets.js:93 msgid "Printing system" msgstr "அசà¯à®šà®¿à®Ÿà¯à®®à¯ அமைபà¯à®ªà¯" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-à®à®œà¯†à®©à¯à®Ÿà¯ கோபà¯à®ªà®•à®™à¯à®•ளà¯" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "வேலணà¯à®Ÿà¯ சாகà¯à®•ெடà¯à®Ÿà¯ˆà®ªà¯ பெறà¯à®™à¯à®•ளà¯" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "சாணà¯à®Ÿà¯à®ªà®¾à®•à¯à®¸à®¿à®²à¯ நனà¯à®•௠அறியபà¯à®ªà®Ÿà¯à®Ÿ சாகà¯à®•ெடà¯à®Ÿà¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #: src/models/variables.js:40 msgid "Variables" msgstr "மாறிகளà¯" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "எ.கா. GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®±à¯à®•௠à®à®±à¯à®±à¯à®®à®¤à®¿ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ மாறிகளின௠படà¯à®Ÿà®¿à®¯à®²à¯" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%B %e, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "பதிபà¯à®ªà¯" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "கடைசியாக பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "இயகà¯à®• நேரமà¯" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "இத௠சரியான விரà¯à®ªà¯à®ªà®®à¯ அலà¯à®²" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "விவரஙà¯à®•ளை காடà¯à®Ÿà¯ (_S)" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "மெனà¯à®ªà¯Šà®°à¯à®³à¯ மேலாளரில௠பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ˆà®•௠காடà¯à®Ÿà¯" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "மெனà¯à®ªà¯Šà®°à¯à®³à¯ மேலாளர௠கிடைகà¯à®•விலà¯à®²à¯ˆ" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "அனைதà¯à®¤à¯ பயனà¯à®ªà®¾à®Ÿà¯à®•ளà¯" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "எலà¯à®²à®¾ பிளாடà¯à®ªà®¾à®•௠பயனà¯à®ªà®¾à®Ÿà¯à®•ளà¯à®•à¯à®•à¯à®®à¯ பொரà¯à®¨à¯à®¤à¯à®®à¯ மாறà¯à®±à®™à¯à®•ளà¯" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "பிளாடà¯à®ªà®¾à®•௠பதிபà¯à®ªà¯" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "போரà¯à®Ÿà®²à¯ பதிபà¯à®ªà¯" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "பாதையை மாறà¯à®±à¯à®®à¯" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "உதவி (_H)" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "ஆவணபà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ (_D)" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "விசைபà¯à®ªà®²à®•ை கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿à®•ள௠(_K)" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "பிளாடà¯à®šà¯€à®²à¯ பறà¯à®±à®¿ (_A)" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "உலகளவில௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "பயனரால௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "இநà¯à®¤ à®®à¯à®±à¯à®±à®¿à®²à¯à®®à¯ பாதை" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "இநà¯à®¤ பாதை à®®à¯à®•பà¯à®ªà¯ கோபà¯à®ªà®•தà¯à®¤à¯à®Ÿà®©à¯ தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯à®¤à¯" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "அனைதà¯à®¤à¯ அமைபà¯à®ªà¯ கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà¯à®•ளà¯" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "அனைதà¯à®¤à¯ கணினி நூலகஙà¯à®•ளà¯, இயஙà¯à®•கà¯à®•ூடியவை மறà¯à®±à¯à®®à¯ நிலையான தரவà¯" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "அனைதà¯à®¤à¯ கணினி கோபà¯à®ªà¯à®•ளà¯" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "அனைதà¯à®¤à¯ பயனர௠கோபà¯à®ªà¯à®•ளà¯" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "டெஸà¯à®•à¯à®Ÿà®¾à®ªà¯ அடைவà¯" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "ஆவணஙà¯à®•ள௠அடைவà¯" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "பதிவிறகà¯à®• அடைவà¯" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "இசை அடைவà¯" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "படஙà¯à®•ள௠அடைவà¯" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "பொத௠அடைவà¯" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "காணொளிகள௠அடைவà¯" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "வாரà¯à®ªà¯à®ªà¯à®°à¯à®•à¯à®•ள௠அடைவà¯" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà¯ அடைவà¯" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "கேச௠அடைவà¯" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "தரவ௠அடைவà¯" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "இயகà¯à®• நேர அடைவà¯" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "படிகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "மாறà¯à®±à®¿à®¯à®®à¯ˆà®¤à¯à®¤à¯ படிகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "உரà¯à®µà®¾à®•à¯à®•லாமà¯, திரà¯à®¤à¯à®¤à®²à®¾à®®à¯ மறà¯à®±à¯à®®à¯ படிகà¯à®•லாமà¯: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "படிகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "மாறà¯à®±à®µà¯‹ படிகà¯à®•வோ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "உரà¯à®µà®¾à®•à¯à®•வோ, மாறà¯à®±à®µà¯‹ அலà¯à®²à®¤à¯ படிகà¯à®•வோ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "அமைகà¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ பாதைகளை அகறà¯à®± à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "மீடà¯à®Ÿà®®à¯ˆà®•à¯à®•வà¯à®®à¯ (_R)" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "இநà¯à®¤ பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯ எநà¯à®¤ மாறà¯à®±à®®à¯à®®à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "இநà¯à®¤à®ªà¯ பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ அனà¯à®®à®¤à®¿à®•ளை மீடà¯à®Ÿà®®à¯ˆà®•à¯à®•வà¯à®®à¯" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", பிளாடà¯à®šà¯€à®²à¯ இல௠செயà¯à®¯à®ªà¯à®ªà®Ÿà®¾à®¤ மாறà¯à®±à®™à¯à®•ள௠உடà¯à®ªà®Ÿ" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "பொதà¯" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "நினைவூடà¯à®Ÿà®²à¯à®•ளைக௠காடà¯à®Ÿà¯" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "ஆவணஙà¯à®•ளைக௠காடà¯à®Ÿà¯" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "மெனà¯à®µà¯ˆà®•௠காடà¯à®Ÿà¯" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "விசைபà¯à®ªà®²à®•ை கà¯à®±à¯à®•à¯à®•à¯à®µà®´à®¿à®•ளà¯" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "வெளியேறà¯" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "வழிசெலà¯à®¤à¯à®¤à®²à¯" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "இடதà¯à®ªà¯à®±à®®à¯ நகரà¯à®¤à¯à®¤à®µà¯à®®à¯" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "மேலே நகரà¯à®¤à¯à®¤à¯" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "வலதà¯à®ªà¯à®±à®®à¯ நகரà¯à®¤à¯à®¤à®µà¯à®®à¯" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "கீழே இறஙà¯à®•à¯" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "பயனà¯à®ªà®¾à®Ÿà¯à®•ளà¯" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "அனà¯à®®à®¤à®¿à®•ளà¯" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "நிலைமாறà¯à®±à¯" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "ஆவணபà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "அடà¯à®¤à¯à®¤à®¤à¯ˆ தேடà¯" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "à®®à¯à®¨à¯à®¤à¯ˆà®¯à®¤à¯ˆà®•௠கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "அனà¯à®®à®¤à®¿à®•ள௠மீடà¯à®Ÿà®®à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©" #: src/widgets/window.js:99 msgid "_Undo" msgstr "செயலà¯à®¤à®µà®¿à®°à¯ (_U)" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "தவறான உளà¯à®³à®Ÿà®•à¯à®•ம௠காரணமாக மாறà¯à®±à®™à¯à®•ளை à®à®±à¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Flatpak நிறà¯à®µà®²à¯à®•ளில௠à®à®±à¯à®ªà®Ÿà¯à®Ÿ மாறà¯à®±à®™à¯à®•ள௠காரணமாக பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "à®®à¯à®¤à®©à¯à®®à¯ˆ படà¯à®Ÿà®¿à®¯à®²à¯" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "பயனà¯à®ªà®¾à®Ÿà¯à®•ள௠எதà¯à®µà¯à®®à¯ கிடைகà¯à®•விலà¯à®²à¯ˆ." flatseal-2.3.0/po/tr.po000066400000000000000000000376251467660615300147450ustar00rootroot00000000000000# Turkish translations for Flatseal package. # Copyright (C) 2021-2024 Flatseal's COPYRIGHT HOLDER # This file is distributed under the same license as the Flatseal package. # # Ümit Solmaz , 2021. # Sabri Ünal , 2022, 2024. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-01-19 00:24+0300\n" "Last-Translator: Sabri Ünal \n" "Language-Team: Türkçe \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" "X-Generator: Poedit 3.4.2\n" "X-POOTLE-MTIME: 1434043811.000000\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Flatpak izinlerini yönet" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "yalıt;yalıtım;sanal ortam;üzerine yaz;üzerine yazma;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal, Flatpak uygulamalarınızdaki izinleri gözden geçirmek ve " "deÄŸiÅŸtirmek için kullanılan grafiksel bir yardımcı uygulamadır." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Flatseal ana penceresi" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal dosya sistemi izinlerini gösterirken" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal genel üzerine yazmaları gösterirken" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Son seçilen uygulama kimliÄŸi" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Bilinmeyen" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "Bahsetmeler" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "Sahibi" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "Oturum veri-yolunda tanınmış adların listesi" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "Sistem veri-yolunda tanınmış adların listesi" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU hızlandırma" #: src/models/devices.js:44 msgid "Input devices" msgstr "Girdi aygıtları" #: src/models/devices.js:51 msgid "Virtualization" msgstr "SanallaÅŸtırma" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Paylaşımlı bellek" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "Tüm aygıtlar (mesela video kamera)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "Sanal alanda kullanılabilen aygıtların listesi" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "GeliÅŸtirme sistçaÄŸrı (mesela ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "DiÄŸer mimarilerden programlar" #: src/models/features.js:51 msgid "Bluetooth" msgstr "Bluetooth" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Denetleyici Alan Ağı veri yolu" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Uygulama Başına Paylaşılan Bellek" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "Uygulamaya sunulan özelliklerin listesi" #: src/models/filesystems.js:37 msgid "All system files" msgstr "Tüm sistem dosyaları" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "Tüm sistem kitaplıkları, yürütülebilir dosyalar ve statik veriler" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "Tüm sistem yapılandırmaları" #: src/models/filesystems.js:58 msgid "All user files" msgstr "Tüm kullanıcı dosyaları" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "Uygulama için kullanılabilen dosya sistemi alt kümelerinin listesi" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "DiÄŸer dosyalar" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "örn: ~/games:ro, xdg-pictures, vs" #: src/models/persistent.js:37 msgid "Files" msgstr "Dosyalar" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "örn: .thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "Sanal alanda oluÅŸturulan anadizin-baÄŸ yolların listesi" #: src/models/portals.js:118 msgid "Background" msgstr "Arka plan" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Arka planda çalışabilir" #: src/models/portals.js:128 msgid "Notifications" msgstr "Bildirimler" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Bildirim gönderebilir" #: src/models/portals.js:138 msgid "Microphone" msgstr "Mikrofon" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Mikrofonunuzu dinleyebilir" #: src/models/portals.js:148 msgid "Speakers" msgstr "Hoparlörler" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Hoparlörlerinize sesler oynatabilir" #: src/models/portals.js:158 msgid "Camera" msgstr "Kamera" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Kameranızla video kaydedebilir" #: src/models/portals.js:168 msgid "Location" msgstr "Konum" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Konumunuza eriÅŸebilir" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "Uygulamaya seçici olarak verilen kaynakların listesi" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Flatpak yüklü sürümü tarafından desteklenmiyor" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "İzin deposu sürüm 2 veya daha yenisini gerektirir" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Portal verileri henüz kurulmadı" #: src/models/shared.js:39 msgid "Network" msgstr "AÄŸ" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "Sürecler-arası iletiÅŸimler" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "Ana sistemle paylaşılan alt sistemlerin listesi" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11 pencere sistemi" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland pencere sistemi" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "X11 pencere sistemine geri dönüş" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio ses sunucu" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus oturum veri yolu" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus sistem veri yolu" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "Güvenli Kabuk aracı" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Akıllı kartlar" #: src/models/sockets.js:93 msgid "Printing system" msgstr "Yazdırma sistemi" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-Ajan dizinleri" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "Sanal alanda bulunan kutuların tanınmış yuvaların listesi" #: src/models/variables.js:40 msgid "Variables" msgstr "DeÄŸiÅŸkenler" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "ör: GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "Dışa aktarılan uygulama deÄŸiÅŸkenlerin listesi" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%B %e, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "Sürüm" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "Son Güncelleme" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Çalışma zamanı" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Bu geçerli bir seçenek deÄŸil" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Ayrıntıları Göster" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Bir yazılım yöneticisinde yazılımı göster" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Yazılım yöneticisi bulunamadı" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "Tüm Uygulamalar" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Tüm Flatpak uygulamaları için geçerli olan deÄŸiÅŸiklikler" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak Sürümü" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Portal Sürümü" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Yolu DeÄŸiÅŸtirir" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Yardım" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_Belgeler" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Klavye Kısayolları" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "Flatseal _Hakkında" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Genel olarak deÄŸiÅŸtirildi" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Kullanıcı tarafından deÄŸiÅŸtirildi" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "bu tam yol" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "ev dizinine göre bu yol" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "tüm sistem yapılandırmaları" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "tüm sistem kitaplıkları, yürütülebilir dosyalar ve statik veriler" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "tüm sistem dosyaları" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "tüm kullanıcı dosyaları" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "masaüstü dizini" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "belgeler dizini" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "indirme dizini" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "müzik dizini" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "resimler dizini" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "genel dizin" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "video dizini" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "ÅŸablonlar dizini" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "yapılandırma dizini" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "önbellek dizini" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "veri dizini" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "çalışma zamanı dizini" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Okuyabilir: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "DeÄŸiÅŸtirebilir ve okuyabilir: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "OluÅŸturabilir, deÄŸiÅŸtirebilir ve okuyabilir: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Okuyamaz: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "DeÄŸiÅŸtiremez veya okuyamaz: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "OluÅŸturamaz, deÄŸiÅŸtiremez veya okuyamaz: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Ayarlanmamış" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Varsayılan yollar kaldırılamaz" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Sıfırla" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Bu uygulamada herhangi bir deÄŸiÅŸiklik yapılmadı" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Bu uygulama izinlerini sıfırla" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", Flatseal ile yapılmayan deÄŸiÅŸikler dahil" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Genel" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Anımsatıcıları göster" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Belgeleri göster" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Menüyü göster" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Klavye kısayolları" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Çık" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "Gezinme" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "Sola hareket et" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "Yukarı hareket et" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "SaÄŸa hakeret et" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "AÅŸağı hareket et" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Uygulamalar" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Bul" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "İzinler" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Aç/Kapat" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "Belgeler" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Sonraki sonucu bul" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Önceki sonucu bul" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "İzinler sıfırlandı" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_Geri al" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Yanlış içerik nedeniyle deÄŸiÅŸiklikler yüklenemiyor" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Flatpak kurulumlarındaki deÄŸiÅŸiklikler nedeniyle yenilendi" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Ana Menü" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Hiçbir uygulama bulunamadı." flatseal-2.3.0/po/uk.po000066400000000000000000000453731467660615300147360ustar00rootroot00000000000000# Ukrainian translation for flatseal. # Copyright (C) 2024 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # volkov , 2024. # msgid "" msgstr "" "Project-Id-Version: flatseal\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-19 13:58+0300\n" "Last-Translator: volkov \n" "Language-Team: volkov \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<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.4.4\n" # Ðе перекладати. #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "Керуйте дозволами Flatpak" #: data/com.github.tchx84.Flatseal.desktop.in:15 msgid "seal;sandbox;override;" msgstr "seal;sandbox;override;флатÑіал;заклеїти;піÑочницÑ;дозволи;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "" "Flatseal — це графічна утиліта Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду та зміни дозволів ваших " "додатків Flatpak." #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Головне вікно Flatseal" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal показує дозволи файлової ÑиÑтеми" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal показує глобальні перезапиÑи" # Ðе перекладати. #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "Ідентифікатор додатку, Ñкий був обраний в оÑтанній раз" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "Ðевідомо" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "СпілкуваннÑ" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "ВолодіннÑ" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "СпиÑок відомих імен Ð´Ð»Ñ ÑˆÐ¸Ð½Ð¸ ÑеÑÑÑ–Ñ—" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "СпиÑок відомих імен Ð´Ð»Ñ ÑиÑтемної шини" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "ВідеоприÑкореннÑ" #: src/models/devices.js:44 msgid "Input devices" msgstr "ПриÑтрої введеннÑ" #: src/models/devices.js:51 msgid "Virtualization" msgstr "ВіртуалізаціÑ" #: src/models/devices.js:58 msgid "Shared memory" msgstr "Спільна пам'Ñть" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "УÑÑ– приÑтрої (наприклад, веб-камера)" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "СпиÑок приÑтроїв доÑтупних у піÑочниці" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "СиÑтемні виклики Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸ (наприклад, ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "Програм з інших архітектур" # Ðе перекладати. #: src/models/features.js:51 msgid "Bluetooth" msgstr "" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "Шина мережі контролерів" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "Спільна пам'Ñть додатка" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "СпиÑок функцій доÑтупних додатку" #: src/models/filesystems.js:37 msgid "All system files" msgstr "УÑÑ– ÑиÑтемні файли" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "УÑÑ– ÑиÑтемні бібліотеки, виконувані файли та Ñтатичні дані" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "УÑÑ– ÑиÑтемні налаштуваннÑ" #: src/models/filesystems.js:58 msgid "All user files" msgstr "УÑÑ– файли кориÑтувача" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "СпиÑок уÑÑ–Ñ… підÑиÑтем файлової ÑиÑтеми доÑтупних додатку" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "Інші файли" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "наприклад: ~/games:ro, xdg-pictures, тощо" #: src/models/persistent.js:37 msgid "Files" msgstr "Файли" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "наприклад, thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "СпиÑок відноÑних шлÑхів до домашньої теки, Ñтворених у піÑочниці" #: src/models/portals.js:118 msgid "Background" msgstr "Задній фон" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "Може працювати у задньому фоні" #: src/models/portals.js:128 msgid "Notifications" msgstr "СповіщеннÑ" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "Може відправлÑти ÑповіщеннÑ" #: src/models/portals.js:138 msgid "Microphone" msgstr "Мікрофон" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "Може проÑлуховувати ваш мікрофон" #: src/models/portals.js:148 msgid "Speakers" msgstr "Динаміки" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "Може програвати звуки через ваші динаміки" #: src/models/portals.js:158 msgid "Camera" msgstr "Камера" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "Може запиÑувати відео за допомогою вашої камери" #: src/models/portals.js:168 msgid "Location" msgstr "РозташуваннÑ" #: src/models/portals.js:170 msgid "Can access your location" msgstr "Може отримати доÑтуп до вашої геолокації" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "СпиÑок реÑурÑів, Ñкі були дозволені додатку" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "Ðе підтримуєтьÑÑ Ð²Ñтановленою верÑією Flatpak" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "ПотребуєтьÑÑ Ð´Ð¾Ð·Ð²Ñ–Ð» Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ 2 або вище" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "Дані порталу ще не були налаштовані" #: src/models/shared.js:39 msgid "Network" msgstr "Мережа" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "ÐšÐ¾Ð¼ÑƒÐ½Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ñ–Ð¶ процеÑами" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "СпиÑок підÑиÑтем, Ñпільних з ÑиÑтемою-хоÑтом" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "СиÑтема вікон X11" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "СиÑтема вікон Wayland" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "Дозволити перемикатиÑÑ Ð½Ð° ÑиÑтему вікон X11, Ñк резервний варіант" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "Ðудіо Ñервер PulseAudio" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "Шина ÑеÑÑ–Ñ— D-Bus" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "Шина ÑиÑтеми D-Bus" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "SSH агент" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "Смарт-карти" #: src/models/sockets.js:93 msgid "Printing system" msgstr "СиÑтема принтерів" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "Теки GPG-агента" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "ÐаÑлідувати Ñокет Wayland" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "СпиÑок відомих Ñокетів доÑтупних у піÑочниці" #: src/models/variables.js:40 msgid "Variables" msgstr "Змінні" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "наприклад: GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "СпиÑок змінних, екÑпортованих додатку" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%e %B, %Y" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "ВерÑÑ–Ñ" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "ОÑтанній раз оновлено" # Ð”Ð»Ñ ÑƒÐºÑ€Ð°Ñ—Ð½Ð¾Ð¼Ð¾Ð²Ð½Ð¸Ñ… перекладачів: Ñ Ð½Ðµ знаю, Ñк переклаÑти це так, щоб було зрозуміло, тому проÑто залишу Ñк "Рантайм" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "Рантайм" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "Це не правильний параметр" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "_Показати деталі" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "Показати цей додаток у менеджері програм" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "Ðе знайдено менеджера програм" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "УÑÑ– додатки" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "Зміни, Ñкі ÑтоÑуютьÑÑ Ð²ÑÑ–Ñ… додатків Flatpak" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "ВерÑÑ–Ñ Flatpak" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "ВерÑÑ–Ñ Ð¿Ð¾Ñ€Ñ‚Ð°Ð»Ñƒ" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "_Підтримка" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "_ДокументаціÑ" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "_Клавіатурні ÑкороченнÑ" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "_Про Flatseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "Змінено глобально" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "Змінено кориÑтувачем" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "це абÑолютних шлÑÑ…" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "цей шлÑÑ… відноÑний до теки \"Домівка\"" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "уÑÑ– ÑиÑтемні налаштуваннÑ" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "уÑÑ– ÑиÑтемні бібліотеки, виконувані файли та Ñтатичні дані" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "уÑÑ– ÑиÑтемні файли" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "уÑÑ– дані кориÑтувача" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "тека робочого Ñтолу" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "тека Ð´Ð»Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð²" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "тека Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½ÑŒ" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "тека Ð´Ð»Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ¸" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "тека Ð´Ð»Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "тека Ð´Ð»Ñ Ñпільного доÑтупу" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "тека Ð´Ð»Ñ Ð²Ñ–Ð´ÐµÐ¾" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "тека Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "тека Ð´Ð»Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "тека Ð´Ð»Ñ ÐºÐµÑˆÑƒ" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "тека Ð´Ð»Ñ Ð´Ð°Ð½Ð¸Ñ…" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "тека Ð´Ð»Ñ Ñередовища виконаннÑ" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "Може читати: %s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "Може змінювати Ñ– читати: %s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "Може Ñтворювати, змінювати Ñ– читати: %s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "Ðе може читати: %s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "Ðе може змінювати або читати: %s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "Ðе може Ñтворювати, змінювати або читати: %s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "Вимкнути" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "Стандартні шлÑхи не можуть бути змінені" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "_Скинути" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "Жодних змін не було прийнÑто до цього додатку" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "Скинути дозволи додатку до Ñтандартних" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ", включає зміни, Ñкі були зроблені не за допомогою Flatseal" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "Загальні" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "Показати мнемоніку" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "Показати документацію" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "Показати меню" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "Клавіатурні ÑкороченнÑ" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "Вийти" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "ÐавігаціÑ" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "РухатиÑÑ Ð²Ð»Ñ–Ð²Ð¾" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "РухатиÑÑ Ð²Ð³Ð¾Ñ€Ñƒ" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "РухатиÑÑ Ð²Ð¿Ñ€Ð°Ð²Ð¾" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "РухатиÑÑ Ð²Ð½Ð¸Ð·" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "Додатки" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "Знайти" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "Дозволи" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "Перемикнути" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "ДокументаціÑ" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "Знайти наÑтупне" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "Знайти попереднє" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "Дозволи були Ñкинуті до Ñтандартних" #: src/widgets/window.js:99 msgid "_Undo" msgstr "_СкаÑувати дію" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "Ðе вдаєтьÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ зміну налаштувань через неправильний вміÑÑ‚" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "Оновлено через зміни в налаштуваннÑÑ… Flatpak" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "Головне меню" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "Ðе знайдено жодного додатку." flatseal-2.3.0/po/zh_CN.po000066400000000000000000000360051467660615300153100ustar00rootroot00000000000000# Chinese (China) translation for Flatseal. # Copyright (C) 2022 THE flatseal'S COPYRIGHT HOLDER # This file is distributed under the same license as the flatseal package. # Eric Zhang , 2022, 2023, 2024. # Dingzhong Chen , 2022, 2023. # msgid "" msgstr "" "Project-Id-Version: flatseal master\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-18 16:26-0400\n" "PO-Revision-Date: 2024-09-25 21:46+0800\n" "Last-Translator: Eric Zhang \n" "Language-Team: Chinese - China \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" "X-Generator: Poedit 3.3.2\n" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.desktop.in:4 #: data/com.github.tchx84.Flatseal.appdata.xml.in:4 msgid "Flatseal" msgstr "Flatseal" #: data/com.github.tchx84.Flatseal.desktop.in:10 #: data/com.github.tchx84.Flatseal.appdata.xml.in:10 msgid "Manage Flatpak permissions" msgstr "ç®¡ç† Flatpak æƒé™" #: data/com.github.tchx84.Flatseal.desktop.in:15 #, fuzzy msgid "seal;sandbox;override;" msgstr "seal;sandbox;å°æ¡;沙盒;" #: data/com.github.tchx84.Flatseal.appdata.xml.in:12 msgid "" "Flatseal is a graphical utility to review and modify permissions from your " "Flatpak applications." msgstr "Flatseal 是一个å¯ä»¥æŸ¥çœ‹å¹¶ä¿®æ”¹ Flatpak ç¨‹åºæƒé™çš„图形工具。" #: data/com.github.tchx84.Flatseal.appdata.xml.in:21 msgid "The Flatseal main window" msgstr "Flatseal 主窗å£" #: data/com.github.tchx84.Flatseal.appdata.xml.in:25 msgid "Flatseal showing filesystem permissions" msgstr "Flatseal 正在展示文件系统æƒé™" #: data/com.github.tchx84.Flatseal.appdata.xml.in:29 msgid "Flatseal showing global overrides" msgstr "Flatseal 正在展示全局覆盖" #. TRANSLATORS: Don't translate this text #: data/com.github.tchx84.Flatseal.appdata.xml.in:35 #: data/com.github.tchx84.Flatseal.appdata.xml.in:37 msgid "Martin Abente Lahaye" msgstr "Martin Abente Lahaye" #: data/com.github.tchx84.Flatseal.gschema.xml:15 msgid "Application ID that was last selected" msgstr "æœ€åŽæ‰€é€‰åº”用程åºçš„ ID" #: src/models/applications.js:237 src/models/applications.js:295 #: src/models/applications.js:296 src/models/applications.js:297 #: src/widgets/globalInfoViewer.ui:105 src/widgets/globalInfoViewer.ui:119 #: src/widgets/globalInfoViewer.ui:133 msgid "Unknown" msgstr "未知" #: src/models/sessionBus.js:38 src/models/systemBus.js:37 msgid "Talks" msgstr "调用" #: src/models/sessionBus.js:45 src/models/systemBus.js:44 msgid "Owns" msgstr "拥有" #: src/models/sessionBus.js:82 msgid "List of well-known names on the session bus" msgstr "ä¼šè¯æ€»çº¿ä¸Šå·²çŸ¥åç§°" #: src/models/systemBus.js:73 msgid "List of well-known names on the system bus" msgstr "系统总线上已知åç§°" #: src/models/devices.js:37 msgid "GPU acceleration" msgstr "GPU 加速" #: src/models/devices.js:44 msgid "Input devices" msgstr "输入设备" #: src/models/devices.js:51 msgid "Virtualization" msgstr "虚拟化" #: src/models/devices.js:58 msgid "Shared memory" msgstr "共享内存" #: src/models/devices.js:65 msgid "All devices (e.g. webcam)" msgstr "全部设备(如:摄åƒå¤´ï¼‰" #: src/models/devices.js:90 msgid "List of devices available in the sandbox" msgstr "æ²™ç›’ä¸­å¯æä¾›çš„è®¾å¤‡" #: src/models/features.js:37 msgid "Development syscalls (e.g. ptrace)" msgstr "å¼€å‘者系统调用(如:ptrace)" #: src/models/features.js:44 msgid "Programs from other architectures" msgstr "æ¥è‡ªå…¶ä»–架构的程åº" #: src/models/features.js:51 msgid "Bluetooth" msgstr "è“牙" #: src/models/features.js:58 msgid "Controller Area Network bus" msgstr "控制器局域网总线" #: src/models/features.js:65 msgid "Application Shared Memory" msgstr "程åºå…±äº«å†…å­˜" #: src/models/features.js:90 msgid "List of features available to the application" msgstr "程åºå¯æä¾›çš„功能" #: src/models/filesystems.js:37 msgid "All system files" msgstr "全部系统文件" #: src/models/filesystems.js:44 msgid "All system libraries, executables and static data" msgstr "全部系统库ã€å¯æ‰§è¡Œæ–‡ä»¶å’Œé™æ€æ•°æ®" #: src/models/filesystems.js:51 msgid "All system configurations" msgstr "全部系统é…置文件" #: src/models/filesystems.js:58 msgid "All user files" msgstr "全部用户文件" #: src/models/filesystems.js:83 src/models/filesystemsOther.js:64 msgid "List of filesystem subsets available to the application" msgstr "程åºå¯ä»¥è®¿é—®çš„æ–‡ä»¶ç³»ç»Ÿéƒ¨åˆ†" #: src/models/filesystemsOther.js:39 msgid "Other files" msgstr "其他文件" #: src/models/filesystemsOther.js:42 msgid "e.g. ~/games:ro, xdg-pictures, etc" msgstr "如:~/games:roã€xdg-pictures ç­‰" #: src/models/persistent.js:37 msgid "Files" msgstr "文件" #: src/models/persistent.js:40 msgid "e.g. .thunderbird" msgstr "如:.thunderbird" #: src/models/persistent.js:62 msgid "List of homedir-relative paths created in the sandbox" msgstr "沙盒在主目录所创建的路径" #: src/models/portals.js:118 msgid "Background" msgstr "åŽå°" #: src/models/portals.js:120 msgid "Can run in the background" msgstr "å…许在åŽå°è¿è¡Œ" #: src/models/portals.js:128 msgid "Notifications" msgstr "通知" #: src/models/portals.js:130 msgid "Can send notifications" msgstr "å…许å‘é€é€šçŸ¥" #: src/models/portals.js:138 msgid "Microphone" msgstr "麦克风" #: src/models/portals.js:140 msgid "Can listen to your microphone" msgstr "å…许从麦克风收音" #: src/models/portals.js:148 msgid "Speakers" msgstr "扬声器" #: src/models/portals.js:150 msgid "Can play sounds to your speakers" msgstr "å…许从扬声器播放声音" #: src/models/portals.js:158 msgid "Camera" msgstr "æ‘„åƒå¤´" #: src/models/portals.js:160 msgid "Can record videos with your camera" msgstr "å…许使用摄åƒå¤´å½•åƒ" #: src/models/portals.js:168 msgid "Location" msgstr "定ä½" #: src/models/portals.js:170 msgid "Can access your location" msgstr "å…许访问ä½ç½®ä¿¡æ¯" #: src/models/portals.js:216 msgid "List of resources selectively granted to the application" msgstr "程åºå¯ä»¥è®¿é—®çš„资æº" #: src/models/portals.js:256 src/widgets/permissionEntryRow.js:58 #: src/widgets/permissionSwitchRow.js:43 msgid "Not supported by the installed version of Flatpak" msgstr "䏿”¯æŒæ‰€å®‰è£… Flatpak 的版本" #: src/models/portals.js:264 msgid "Requires permission store version 2 or newer" msgstr "需è¦å­˜å‚¨æƒé™ç‰ˆæœ¬ 2 åŠä»¥ä¸Š" #: src/models/portals.js:272 msgid "Portal data has not been set up yet" msgstr "门户(portal)数æ®è¿˜æœªé…ç½®" #: src/models/shared.js:39 msgid "Network" msgstr "网络" #: src/models/shared.js:46 msgid "Inter-process communications" msgstr "进程间通信" #: src/models/shared.js:79 msgid "List of subsystems shared with the host system" msgstr "与主机所共享的å­ç³»ç»Ÿ" #: src/models/sockets.js:37 msgid "X11 windowing system" msgstr "X11 窗å£ç³»ç»Ÿ" #: src/models/sockets.js:44 msgid "Wayland windowing system" msgstr "Wayland 窗å£ç³»ç»Ÿ" #: src/models/sockets.js:51 msgid "Fallback to X11 windowing system" msgstr "回退到 X11 窗å£ç³»ç»Ÿ" #: src/models/sockets.js:58 msgid "PulseAudio sound server" msgstr "PulseAudio 音频æœåС噍" #: src/models/sockets.js:65 msgid "D-Bus session bus" msgstr "D-Bus ä¼šè¯æ€»çº¿" #: src/models/sockets.js:72 msgid "D-Bus system bus" msgstr "D-Bus 系统总线" #: src/models/sockets.js:79 msgid "Secure Shell agent" msgstr "SSH 代ç†" #: src/models/sockets.js:86 msgid "Smart cards" msgstr "智能å¡" #: src/models/sockets.js:93 msgid "Printing system" msgstr "打å°ç³»ç»Ÿ" #: src/models/sockets.js:100 msgid "GPG-Agent directories" msgstr "GPG-Agent 目录" #: src/models/sockets.js:107 msgid "Inherit Wayland socket" msgstr "继承 Wayland 接å£" #: src/models/sockets.js:132 msgid "List of well-known sockets available in the sandbox" msgstr "æ²™ç›’å¯æä¾›çš„æŽ¥å£" #: src/models/variables.js:40 msgid "Variables" msgstr "环境å˜é‡" #: src/models/variables.js:43 msgid "e.g. GTK_DEBUG=interactive" msgstr "如:GTK_DEBUG=interactive" #: src/models/variables.js:73 msgid "List of variables exported to the application" msgstr "导出到程åºçš„环境å˜é‡" #. TRANSLATORS: , #: src/widgets/appInfoViewer.js:61 msgid "%B %e, %Y" msgstr "%Yå¹´%-m月%-eæ—¥" #: src/widgets/appInfoViewer.ui:46 msgid "Version" msgstr "版本" #: src/widgets/appInfoViewer.ui:59 msgid "Last Updated" msgstr "æœ€åŽæ›´æ–°" #: src/widgets/appInfoViewer.ui:72 msgid "Runtime" msgstr "è¿è¡ŒçŽ¯å¢ƒ" #: src/widgets/busNameRow.js:35 src/widgets/pathRow.js:73 #: src/widgets/relativePathRow.js:33 src/widgets/variableRow.js:33 msgid "This is not a valid option" msgstr "éžæ³•选项" #: src/widgets/detailsButton.js:60 msgid "_Show Details" msgstr "显示细节(_S)" #: src/widgets/detailsButton.js:107 msgid "Show application in a software manager" msgstr "在软件管ç†å™¨ä¸­æ˜¾ç¤ºç¨‹åº" #: src/widgets/detailsButton.js:109 msgid "No software manager found" msgstr "没有找到软件管ç†å™¨" #: src/widgets/globalRow.ui:7 src/widgets/globalInfoViewer.ui:21 msgid "All Applications" msgstr "全部应用程åº" #: src/widgets/globalInfoViewer.ui:32 msgid "Changes that apply to all Flatpak applications" msgstr "适用于所有 Flatpak 应用程åºçš„æ›´æ”¹" #: src/widgets/globalInfoViewer.ui:55 msgid "Flatpak Version" msgstr "Flatpak 版本" #: src/widgets/globalInfoViewer.ui:68 msgid "Portal Version" msgstr "Portal 版本" #: src/widgets/globalInfoViewer.ui:81 msgid "Changes Path" msgstr "更改项路径" #: src/widgets/menu.ui:7 msgid "_Help" msgstr "帮助(_H)" #: src/widgets/menu.ui:11 msgid "_Documentation" msgstr "文档(_D)" #: src/widgets/menu.ui:15 msgid "_Keyboard Shortcuts" msgstr "å¿«æ·é”®(_K)" #: src/widgets/menu.ui:19 msgid "_About Flatseal" msgstr "关于 Fl_atseal" #: src/widgets/overrideStatusIcon.js:25 msgid "Changed globally" msgstr "全局更改" #: src/widgets/overrideStatusIcon.js:26 msgid "Changed by the user" msgstr "按用户更改" #: src/widgets/pathRow.js:27 msgid "this absolute path" msgstr "ç»å¯¹è·¯å¾„" #: src/widgets/pathRow.js:28 msgid "this path relative to the home directory" msgstr "相对于主目录的路径" #: src/widgets/pathRow.js:29 msgid "all system configurations" msgstr "全部系统é…置文件" #: src/widgets/pathRow.js:30 msgid "all system libraries, executables and static data" msgstr "全部系统库ã€å¯æ‰§è¡Œæ–‡ä»¶å’Œé™æ€æ•°æ®" #: src/widgets/pathRow.js:31 msgid "all system files" msgstr "全部系统文件" #: src/widgets/pathRow.js:32 msgid "all user files" msgstr "全部用户文件" #: src/widgets/pathRow.js:33 msgid "the desktop directory" msgstr "桌é¢ç›®å½•" #: src/widgets/pathRow.js:34 msgid "the documents directory" msgstr "文档目录" #: src/widgets/pathRow.js:35 msgid "the download directory" msgstr "下载目录" #: src/widgets/pathRow.js:36 msgid "the music directory" msgstr "音ä¹ç›®å½•" #: src/widgets/pathRow.js:37 msgid "the pictures directory" msgstr "图片目录" #: src/widgets/pathRow.js:38 msgid "the public directory" msgstr "公共目录" #: src/widgets/pathRow.js:39 msgid "the videos directory" msgstr "视频目录" #: src/widgets/pathRow.js:40 msgid "the templates directory" msgstr "模æ¿ç›®å½•" #: src/widgets/pathRow.js:41 msgid "the config directory" msgstr "é…置目录" #: src/widgets/pathRow.js:42 msgid "the cache directory" msgstr "缓存目录" #: src/widgets/pathRow.js:43 msgid "the data directory" msgstr "æ•°æ®ç›®å½•" #: src/widgets/pathRow.js:44 msgid "the runtime directory" msgstr "è¿è¡ŒçŽ¯å¢ƒç›®å½•" #: src/widgets/pathRow.js:59 #, javascript-format msgid "Can read: %s" msgstr "å¯ä»¥è¯»å–:%s" #: src/widgets/pathRow.js:60 #, javascript-format msgid "Can modify and read: %s" msgstr "å¯ä»¥è¯»å–和修改:%s" #: src/widgets/pathRow.js:61 #, javascript-format msgid "Can create, modify and read: %s" msgstr "å¯ä»¥åˆ›å»ºã€è¯»å–和修改:%s" #: src/widgets/pathRow.js:67 #, javascript-format msgid "Can't read: %s" msgstr "ä¸å¯ä»¥è¯»å–:%s" #: src/widgets/pathRow.js:68 #, javascript-format msgid "Can't modify or read: %s" msgstr "ä¸å¯ä»¥è¯»å–和修改:%s" #: src/widgets/pathRow.js:69 src/widgets/pathRow.js:70 #, javascript-format msgid "Can't create, modify or read: %s" msgstr "ä¸å¯ä»¥åˆ›å»ºã€è¯»å–和修改:%s" #: src/widgets/permissionPortalRow.ui:11 msgid "Unset" msgstr "å–æ¶ˆè®¾å®š" #: src/widgets/relativePathRow.js:84 msgid "Default paths can't be removed" msgstr "无法移除默认路径" #: src/widgets/resetButton.js:37 src/widgets/resetButton.js:55 #: src/widgets/resetButton.js:62 src/widgets/window.js:106 msgid "_Reset" msgstr "é‡ç½®(_R)" #: src/widgets/resetButton.js:65 msgid "No changes made to this application" msgstr "未对程åºåšä»»ä½•更改" #: src/widgets/resetButton.js:68 msgid "Reset this application permissions" msgstr "é‡ç½®ç¨‹åºæƒé™" #: src/widgets/resetButton.js:70 msgid ", including changes not made with Flatseal" msgstr ",包括未通过 Flatseal 修改的æƒé™" #: src/widgets/shortcutsWindow.ui:11 msgid "General" msgstr "通用" #: src/widgets/shortcutsWindow.ui:15 msgid "Show mnemonics" msgstr "显示助记键" #: src/widgets/shortcutsWindow.ui:21 msgid "Show documentation" msgstr "显示文档" #: src/widgets/shortcutsWindow.ui:27 msgid "Show menu" msgstr "显示èœå•" #: src/widgets/shortcutsWindow.ui:33 msgid "Keyboard shortcuts" msgstr "å¿«æ·é”®" #: src/widgets/shortcutsWindow.ui:39 msgid "Quit" msgstr "退出" #: src/widgets/shortcutsWindow.ui:46 msgid "Navigation" msgstr "导航" #: src/widgets/shortcutsWindow.ui:50 msgid "Move left" msgstr "å‘左移动" #: src/widgets/shortcutsWindow.ui:56 msgid "Move up" msgstr "å‘上移动" #: src/widgets/shortcutsWindow.ui:62 msgid "Move right" msgstr "å‘å³ç§»åЍ" #: src/widgets/shortcutsWindow.ui:68 msgid "Move down" msgstr "å‘下移动" #: src/widgets/shortcutsWindow.ui:75 src/widgets/window.ui:21 msgid "Applications" msgstr "应用程åº" #: src/widgets/shortcutsWindow.ui:79 src/widgets/shortcutsWindow.ui:101 msgid "Find" msgstr "查找" #: src/widgets/shortcutsWindow.ui:86 src/widgets/window.ui:95 msgid "Permissions" msgstr "æƒé™" #: src/widgets/shortcutsWindow.ui:90 msgid "Toggle" msgstr "打开/关闭" #: src/widgets/shortcutsWindow.ui:97 msgid "Documentation" msgstr "文档" #: src/widgets/shortcutsWindow.ui:107 msgid "Find next" msgstr "查找下一个" #: src/widgets/shortcutsWindow.ui:113 msgid "Find previous" msgstr "查找上一个" #: src/widgets/window.js:98 msgid "Permissions have been reset" msgstr "æƒé™å·²è¢«é‡ç½®" #: src/widgets/window.js:99 msgid "_Undo" msgstr "撤消(_U)" #: src/widgets/window.js:105 msgid "Cannot load overrides due to incorrect contents" msgstr "ç”±äºŽå†…å®¹ä¸æ­£ç¡®è€Œæ— æ³•加载更改" #: src/widgets/window.js:112 msgid "Refreshed due to changes in Flatpak installations" msgstr "由于 Flatpak å®‰è£…çš„å˜æ›´è€Œåˆ·æ–°" #: src/widgets/window.ui:31 msgid "Main Menu" msgstr "主èœå•" #: src/widgets/window.ui:75 msgid "No applications found." msgstr "没有找到应用程åºã€‚" flatseal-2.3.0/screenshots/000077500000000000000000000000001467660615300156655ustar00rootroot00000000000000flatseal-2.3.0/screenshots/en/000077500000000000000000000000001467660615300162675ustar00rootroot00000000000000flatseal-2.3.0/screenshots/en/1.png000066400000000000000000003655351467660615300171560ustar00rootroot00000000000000‰PNG  IHDRb6½‹%ðsBIT|dˆtEXtSoftwaregnome-screenshotï¿>-tEXtCreation TimeSat 13 Apr 2024 09:28:17 AM -04Cƒž IDATxœìÝyx“UÞ>ð;ûB÷Ú]ÁÒ"e¯lDÁÅ™WÁ™ÁQ\ÀŸŽ(Êà2 ( /ˆ Š(ˆ e)–² eqŠZ t¡{º¥Ù~tò˜¦Iš´I›¶÷çºrµy–óœ¤kî|Ï9‘WµvÚ0>wDDDDDDÔ‘™Z»mÃûøÜ5ƒ6Ôáó@DDDDDDäy>œé¨DG}ÜDDDDDDDÞ¤Ã3)èH•ˆˆˆˆˆˆ¨­é¡LG':Âc$""""""j/Úu Ó^CŠöú¸ˆˆˆˆˆˆˆ:’vÊ´·À¢½="""""""jGL{ .ÚËã """""""ûÚ| ÓŒ–z ͹N{xž‰ˆˆˆˆˆ¨ýkNÐÑR!I›cÚr@à‰¾;Óf[~ΈˆˆˆˆˆˆÜÍ™`ÄáI› dÚb¨àÎ>;j«->7DDDDDDDÞÂQPâÎ¥M2m-lpGíµÑÖž """"""¢¶Ä^`⎠¥Í„1m)|ðÄ-méñµžeÚDÓV‚ˆ¦öÓÖyœt—ˆˆˆˆˆˆÈ½Ü 4µ=¯c¼=XhÆ]ω·?·DDDDDDDޏ+Ôp¶ÈxsX஦±v\½Ž7?gDDDDDDD-ÍÕУ±ã­÷·«0Æ[C…¦ôË•ÆÕêo}žˆˆˆˆˆˆˆ¼‰ÉꣳÇ;³¯)ÁŠ×…1Þ047„iN#jâõ‰ˆˆˆˆˆˆÈ6\¯‚±·¯Í‡1Þ:4w˜PSVG7ñZDDDDDDDô;gcÚhnuŒ×„1Þ.4'„q5€qTùâÎU•¼éù%""""""r–»æiqt®£Jg¶·É0Æ›‚WúÒÔÆ^õ‹+Ù¼é9#""""""jm®„6ööÙª’qwà Ƃ;Cggœæ,ƒMDDDDDDÔ4¶ì´+U/Î2m6Œñ†P¡¥C˜Æ*\š²R’7wu¸’­¶‰ˆˆˆˆˆˆ¨Ž½\©z±È4VIc¹ÍëÃ˜Ö Z+„ÁùJ±} cˆˆˆˆˆˆˆ~g/$i¬šÅ2·U–©¶§¥‚w†ÎÎcùÑ^#¶ñQl£ 0DDDDDDD¶ÙªRÿ÷£u!Œ9(1¢~Œåyö e‚{![µT¨àÊÜ0î’d+„± \€ßƒ±Å> êB*[ÁŒ+‡ˆˆˆˆˆˆ¨=³UcüïM@‡ºpÅd±Ý|3kпÏcoh“­ëºkˆ’ǃošä¬æ„0–%ÿý\@þõ×_>|øR©´¯Édò3™L—ˆZHyy9ºuëÖÚÝ """"êpD"‘@¡^¯Ï(..>öÙgŸíå•W®¨E](cùÚ݈º×ã–­+c׆(y½–¨ìpå¶BƪaÄ6ö[-öBÉo"ª¯¿þzTRRÒëF£±;˜LmòëIDJKKÕÚÝ """""555;>þøã5¯¼òÊeÕ¨ P ÿ½YWÄXÎ%cY%cYÕb=±¯õ~[/è­‡B9âÑ@À›‚GÃ’­‚d½Ý:|±¼o¾I,nªœœœ%*•jÀ†¨=`CDDDDä]D"‘á·ß~[اOŸ¯QÆP?Œ1ß,‡ Yßì‡1¶K^3<ÉÓÃn\ z\Y)ÉÖ1¶BÀ~%Œ€º  àc•J5Éd21„!""""""ò“É$éÙ³çâëׯO FÃ×çŽ^ËÛ*Ðp¤©ùBSŽuY[˜ÿ¤±jËmÖŸ[~ÑÌ_\!„ÉÉÉY,‹G2€!""""""ò¼ÐÐЗ.\¸0 õÃóGËâ 3G¯÷-·¹Ô´*o b\퇣!L¶Ò2Ë!I"ÔMÊ;Â\ CDDDDDDD-ãÖ[o}kéÒ¥1ä¨_8a]cë5¾%WC¯È@<9Û¾«“ôÚJ¾ìÍ #BÝêP–)›Oqqñ.£ÑØA Qûãì1ÕÕÕÐjµÐëõ-Ð+ò$©T …B•JÕÚ]!""¢ ×ë¡×ëa4º2ÿjû!‹!•J!•¶Ý…kjjvøùù½ ¿Ïc@Ý’×–K]Ûš3¨?WŒ'&íõXXàÉ4È!u¶R°ÆŽ±.o’nß¾}C¢ŽË`0 ´´••• aÚ ½^ÊÊJ”––Â`0´vwˆˆˆÈCL&jjjP[[ÛaC0¨­­EMMM›ëT©TNzûí·£PW8a=­ˆYS2[Ç4…Ç W¼¡,§©®±±a–•3–ÿÈGŒñD¯IDí€F£aÓNéõzh4šÖîyˆV«íÐŒ5£Ñ­VÛÚÝh²©S§ŽFÝð$Ë×ì@ý`íÍãŠVŸCÆ›ƒWŸëÌú g¾/‘Édñm55$¢æ©®®fÓÎéõzTWW·v7ˆˆˆÈÍ:òP$GŒFc›ýÿ688x0~ÅbY`akÂÞ¦d®lo1ž bšûÀlÍŠlk‚žÆJlÍ#5™L~ÍìµQmùr¿ÎDDDíO[ ZB[}n¤RioÔ M²žïÕÞJI€ý\ÀÖªIîÌ&ܦµgöñÔ¸-[_8á‹j2™¼¡ˆˆZA[ý#E®á×™ˆˆ¨ýa5Œ}î|n ´Z-t: ƒÐ¶X,†D"L&ƒB¡€D"i¤%§„ añ„™9”±žP„æO¤ëŽ6š¬µƒ{[–ÊÖ:áöÖ·Þ×êeHDDDDDDDÞÄ`0 ªªÊne±Ñh„Ñh„N§CUU Ôju³“Éd¹¸l|nþh²¸o²Úf²:ÎR«.öxkÓTÖ!‹õ3†0DDDDDDDjjjPQQáÒ9Z­Z­>>>P*•Íí‚õkvëJ¯ Tšª­ Ñqf¬—½ñd¶Æ‹uXUUU.‡0–***PUUÕœ.8zÍn=i¯­ó¬?÷zž¨ˆqö pæ8GÇ8š°ÇÑìÈnû;w;vìÀÙ³gQ^^ôíÛ“&MB\\œ».CDDDDDDäv555Í QÔ…9b±¸©•1Ž^§[A²®ŠqT%ãL³U6n¯Æií¡IÍcæLÖØ5Ü ¬\¹;w½°°û÷ïÇþýû1iÒ$Ìš5Ë]¹Á`hV%ŒµŠŠ Èd²¦¾v¦°Âúx[ሀõÌÅ^7wLk1¶4umpGËX[Wjs£P(0eÊÜyç EAA’““ñÅ_`ÇŽ0™L˜;w®».ëÕ6oÞŒµk×/^ŒÄÄD\gâĉP©TøòË/QUU…‡~°mÛ6¨T*·_¯%®ÑÞ7®IçíÝ»×Í=q¯êêjlß¾‡B~~>T*¢££ñ裢ÿþx衇 T*ñÅ_´ZŸ}öYdffD"BBBЭ[7Œ?£Göøõ«««1yòdu¿#T*•W|¸E®©T*èèh(Šf··dÉŒ7Nxáê‰kPû`4ñÖ[oaÓ¦M(//G\\:uê„3gÎxå²É£FBRRžžŽ¥K—bÑ¢E.µ±téRL˜0—/_vú…B¨¨(DEEñ燨šŒM›6¡¤¤ÄãײǼDµ»iµZ Ö«M;ÅÙ×쎦(i3¼±"ÆÜþEùæ›oS¦LAll¬Ícbcc1yòdlذß|óM»Ÿ/æúõë¸té&Nœˆ}ûö!55ƒÁãòÄb1V®\Ùæ¯ÑÞy{eKS\ºt §OŸF¿~ý°téRˆDu¿fjjj —Ë[¹w ýõ¯E§N/^Ä›o¾‰ÔÔTüôÓO¸ë®»Ü¼y111xòÉ'që­·bãÆ8qâ €¤¤$<õÔSËåX²d öïßøóŸÿ ‰D‚~øÁî5¾øâ á‘‘‘˜:u*†Z¯_cÆŒR©ÄáÇ¡Óépÿý÷cÚ´iÂ1iiiøôÓOqõêU¨ÕjDEEáoû[sJù¨…¨ ^ôz=d24˜œL¯×cõêÕ8|ø0ôz=î»ï><ñÄÂ~£Ñˆ-[¶`ÿþý¸yó&ºwïŽ'Ÿ|ƒP dddà½÷ÞC||<´Z-{ì1èt:|òÉ' ƒF£Á#<‚¾}ûbÙ²eö½W¯^˜1cÞ}÷]ìÞ½[bjjj°~ýz¤¥¥¡²²ñññ˜5kºté‚¥K— ?ç³gφD"Á®]»PVV†M›6áäÉ“(**‚¿¿?F…©S§ ÔC=¹\Ž-[¶ØìÏÑ£GñÙgŸ!''jµ‘‘‘xíµ×àãããÂW„ˆ¼™Z­Fpp0ÊÊÊÐ¥K@qq1î½÷^ÄÇÇ C›—/_ŽÍ›7cÙ²e5jÆŒ…Ba÷Ÿýªª*,_¾‡†Z­†ŸŸ_ƒcª««ñÑG!%%HHHÀ¼yó„0h̘1;v,ÂÃñsçN„‡‡cõêÕz&ˆÈ›………!77W¨ÜÓëõ8}ú4®]»†ÚÚZtéÒþG¹~ý:ÒÓÓQVV™L†€€Œ9r¹ÜṇFVV`×®]‹Åxì±ÇZüñêt:‡û£¢¢pþüyÌŸ?ÿøÇ? ‰ðꫯ"33Ý»woVÛÍàJ6àUC‘¬µÖÐ$G3"7§=W‡,¹¬¼¼êð8óØÂ–(mkm„Z­Æí·ßŽ;íáI_|ñÎ;‡¾}û¢  |ðŽ9âò1Ž|øá‡X·nôz=Q]] µZ ¹\Ž´´4DDD`Ô¨Q0øòË/ñÙgŸ¨ºa6|øp<ù䓯±~ýzH¥R 4—.]Âk¯½†³gÏÖ;n÷îÝHMME×®]QVV†O?ýGäççãÍ7ßD~~>î¿ÿ~ >J¥’!LÑ»wo( ddd`ÆŒøßÿý_\½zµÁq©©©Gii)6mÚ„cÇŽ ûW­Z… 6@"‘`àÀÈÌÌÄßþö7œ;w„Ÿ'óýsçΡ²²µµµ8qâàìÙ³0™L2dˆÓý7·›““#l[²d vî܉=z 11'NœÀ¢E‹`2™0bÄá¸aÆáñÇP7žúèÑ£ˆˆˆÀˆ#`2™°mÛ6§ç)((ÀßÿþwäççãÞ{ïŰaàT*µ‡¾}ûðÔSOáÚµk˜1cÄb÷ýë¹páBìܹ!!!¸å–[páÂ…ǼöÚkضmzõê…‘#GâÈ‘#˜?~½!R»víÂÚµk¡R©Ð«W/·õˆÚŽÒÒR!1¿ŽKIIAFFÑ­[7\¿~‡TVVâàÁƒ¨¬¬D¯^½Ð½{wH¥Rá(GçFFF ×íÞ½;úöíÛ‚ôw Z²d """••…ùóçcþüùÈÌÌD—.]°xñâfµí${¯í››8»Ý£ÚBEŒWñóóCQQ a÷¸‚‚áøö,''—/_ÆèÑ£!•J1dȈÅb>|sæÌ†l˜}òÉ'J¥HNNÆÛo¿o¾ùFxQèÊ1¶Ü¼y»víB×®]±fÍšCDÌ¡ äææbêÔ©8~ü8¦OŸŽ‘#Gb̘1Ø¿?¦NŠ=z8¼Ftt4V­Z©TŠÝ»wãƒ>À—_~Ùàéúõë!“ÉðÙgŸaýúõ8sæ †ŠœœèõzôíÛ3fÌ€TÚ~Ûãd½ÁÁÁxë­·°fÍdffbë֭ضm’’’0kÖ¬z嬟|ò  6mÚ„M›6!==C† ¾—¢¢¢ðá‡B*•bÏž=X¾|9¶mÛ†øøxÜqÇø¿ÿû?!ˆ9uê|||PSSƒãÇãþûïÇ™3g ^EVcÔj5Ôj5*++¡×ëqõêU?~ Ào¼ ®¤4%%7nÜÀˆ#0zôh8pO<ñn¹å€J¥ÂÆ…vsssñôÓOãĉõª¿ì1ÿÄÇÇcúôéíú瀨#²ž‹ê»ï¾ÃÈ‘#ѵk×f·““ƒ””„……aݺuJ¥Âßb³ß~û ©©©2dþñ¨«þKNNÆõë×ë½£ûñÇ#!!¡Ùý"¢¶eëÖ­õîÇÆÆ",, %%%¸~ý:ÂÃÑ””ÂÿL0èܹ3ê…̉èèhdeeáöÛoG```Ë=` ÍÙ‚eË–á•W^©R-]ºT¨nljÛäþ ¦%Ò¤ÆÆ‹¹mb^[n¿ývìß¿ÉÉÉõ†XÛ·o´ZÂÙRÌÃ8 üÀFá×_EŸ>}„c»ví*¼Ð>|84¨"pæ{®\¹£ÑˆÁƒÛœ§###_}õΟ?òòr˜L&¡ÂÉY—/_†ÑhÄ Aƒ„~Ž3|ð²³³ëëïï/ Y1?æ ©[o½¾¾¾HIIÁþð 2S¦L±‘÷IHHÀ¿ÿýoœ}:gΜAxxx£%¢–´Z-ª««…‰ÆÍ•1§N„ ê«Ñh¶uñâEìØ±çÏŸ‡F£qéçªgÏžðññÁÏ?ÿŒ‡~ƒÆ£>ÊŸ¢vbïÞ½Â1+W®ÄöíÛñÞ{ïáŸÿüg³Û¾rå `ðàÁÂïÐþýû× bÌ/Ž;Ö`5GËßS …‚! QÕ½{wáÿ ©TŠøýöÜÜ\lÚ´©Þ9Z­AAAËå¸zõ*¶nÝŠˆˆÄÇÇ#00°ÑsÛR¼e•Èd²–žÑ™U’ÌÇxz(’[‡;u„·ÝÌLš4 û÷ïÇ_|Úœ°÷Â… زe D"&MšäŽËz-ËÕ’Ìåvf‡®ÄXª®®‡+!8sŒ%óòk&Sß¼¼<Ì›7]ºtÁ‹/¾ˆ¨¨(<òÈ#Nµk©¦¦@ýr»ÚÚZˆD¢óƒX²ž¸Øßßk×®ÅöíÛ…ð‡‡~ˆÞ½{»Ü/oæÍ•-Í%‰0hÐ 4wß}7,X T¯X³þpö{)11_}õNž<‰+W®`Ú´i(((À/¿ü‚ŸþÙÙÙxðÁ]ê÷éÓ§a2™Â? ˜3gN½c½ã‘——‡—_~]ºtÁ /¼€¨¨(L™2Åé~øûûcõêÕøúë¯ñóÏ?ãСCHIIÁ¿þõ/ jGÔj5¦M›†íÛ·7ÆÛÔwMÍó8š Ò\8xð`¼ôÒKõöYV5«Tª&õˆÚ¾ÄÄDŒ5 ;wî„F£Á7!¼þæî3óññX,ÆÄ‰ñ믿"''ÙÙÙ¸zõ*&L˜Ðè¹ÞB,;ü\RR‚ùóçãêÕ«Â~999X°`–-[æ°’§ÃP=ZTáMÚâòÕ­*..“&M‚V«ÅK/½„O?ý7nÜ€N§Ãõë×±qãF¼üòËÐjµðóósKù­·ÊÊÊBvv6úõ뇽{÷ 7ó¤{)))õŽ¿~ýºP pòäI@tt´ËÇØû…Ñ­[7u“ÖÖÖÖÛwîÜ9hµZ :ýû÷þ9³\jØüŽšùú¶DEE¨›h×|cÇŽÁd2¹ü.~pp0þô§?aãÆ˜íRÔ:ôz=.^¼Ø`§ËKÍÐŽ;&|/?~&“Iúü>ŸË§Ÿ~ ©TŠ~ýú ïì®[·&“É¥aI7nÜÀ'Ÿ|‰D"Ìõ±XŒÌÌL [·nÂÍ\Õe’,>.\¸­V‹Áƒ#!!AŠÙظ`˰4883gÎÄúõëñÈ#Àd2 툨ý(--P÷3ü~\¹rEU._¾Üh;æÿÌSSS…ó322ê±XŒŒŒ !**J¸™·‰D"ôë×@]u°Éd‚¿¿?D"ŠŠŠ T*áçç'ÜÌ!ƒJ¥Â€ðàƒ"..&“ ùùùNkþhýš¥%5¶Âí믿.„0Ë–-òeË„ ¢×_½YmSû¨ˆiñ´lÖ¬Y€;v`Æ ذaCý‰D@ii)^|ñE¼ÿþû­6öÏ“ÌÕ0Öå¾ÑÑѬ㙙™õŠ?ýéOˆGZZD"‘ͪGÇøûû#//ëׯǣ>Z>={âöÛoGzz:ž}öY 8W®\ÁÔ©S…É•wïÞ N'T-XÎIa~ñûÑG!11=öXƒÒ»èèh 2ÇŽìY³Ð³gO¤¦¦B&“ /j‘••…%K– ÿþP«ÕB5‘¹B¼Û‰'ðæ›o"88]»vEuu5233Ô­˜åŒèèh <ÇÇœ9sгgO9r2™¬ÞÌùqqqð÷÷ÇÅ‹‘•J•J…=z 33*•ªÑ!ÿþ÷¿!•J‘ŸŸŒŒ èõz̘1CøžÆ=÷܃]»vá¯ý+ÆŒƒ¢¢"TUUáÕW_P÷ó±oß>¬^½C‡ÅäÉ“سgôz½ðså诟Ÿòóó±aÃ$&&âŸÿü' V«…ðÖ:|%¢¶iýúõËå())Ajj*»U*z÷ LŸ>8~ü¸Ãö››‹Õ«WãÉ'ŸD¿~ýpæÌ<õÔSˆ‰‰iPŠI“&᫯¾ÂŒ3p÷ÝwãæÍ›¨¬¬lt¢I"êX¢££qþüy””” 33={öÄ­·ÞŠ‹/bÏž=ˆŽŽFuu5jkk…•bÍóTÉd2a*…€€¨Õj‡ç¿¿qwòäItíÚñññ-^Èd2‡«™_Ç-^¼Xèï²eËðúë¯ ÿ÷:jÛü~U¤Æ°"¦ $ æÌ™ƒýë_;v,BCC!“É‚1cÆ`ùòåX»v-bbbpõêU¼øâ‹())iín»ÝÁƒÀæDºæpƲ*Æ××·ÝvŽ?Žððpüýïo0´«±cžyæá»ï¾³ùÎÙÂ… 1aÂh4|ûí·(--Emm-úõë‡Ç{ R©ûöíCÏž=…ɳÌ|ðAŒ7¹¹¹øþûï…±åÖ^ýuLœ8UUU8vìbccñᇠ9ÎÐét Drr²0^ ä_ IDATŒíÙgŸuiå›¶bܸqMºy³nݺᡇ‚¯¯/.]º„ÜÜ\ôîݯ½öî¾ûn§ÛyõÕWqÿý÷£ººÇŽÃm·Ý†å˗׫¤‹ÅÂ÷…ey«ùçnÀ€Nrkž×ª¤¤C‡ÅŠ+ð‡?ü¡Þ1³fÍ´iÓ ‘H°uëVüç?ÿR©ªW&Nœˆ±cÇ"//{öìAvv6n¿ývLž( —'$–Ëå‰4 ôV7“°sÿÝ‹mÖ!€õñé“õºyÅä>x÷ÝwñÚk¯ ëÑu4íy²^""""¢¶J­V»=ˆq5 r‚«9@›(ylKAL›€•+W¶v7ˆˆˆˆˆˆˆ‰>>>+q…'êu’7ÍãLÒå•.DDDDDDDmR©tK‹Z­†R©tCš¬Må ¬ˆ¡ñí·ßºå""""""rµZ ±XÜäÊŸÖaÚ1DDDDDDD˜R©„L&CUU•ÓóÆ( ¨ÕjGj‚Öb¼¦ˆˆˆˆˆˆˆˆêæŒñõõ&ñÕét0 0ë‹ÅH$ÉdP(í)€iñI~YCDŠT*…^¯oín‡I¥üóFDDÔÞˆÅb! úÄb÷Mÿ*‘H<±úYð¦Éz‰ˆvd bˆˆˆˆˆˆˆˆZçˆñ2&“I¸u%\æµm bZ™Á`n:ùåUP][Ĩä"„øHÐÙW™L ‰D"܈ˆˆˆˆˆˆ¨maÓ ŒF#jkkQ^Q…´+:ÏÖã|×5ÔÌ£Å,+` Ktèêk@\g†FË#ƒ¯2™ b1G˜µ bZÉdBuu52®•cÛ#R²eÐÔJáÌ—¡Ö Æ•R1®”ÊðÝEÀW®ÇȨ"<œ F¯®~P©T¾DDDDDDDäåÄ´­V‹K×K°6Í„”l9 Í\6]S+Æîßøá0*º 3‡–¡G× ( ÷t˜ˆˆˆˆˆˆˆÜŽAŒ‡™L&”””bˉ*l<-G޽È &`ÿ9ÒrŒ˜Ú¿R# €Õ1DDDDDDD^ˆAŒF\¹V€wG¯)=z­j½«+‘ž§Å‹£òÓ½ çŽ!""""""ò2|¥î!ƒ.çâ¥ïD8zMÖb×=’#à ßJþÛ  †».5ŽAŒ œÏÌÅK»¤È*mù¢£œr ì‘ãÂå\†1DDDDDDD^„AŒ›™L&\ÎÉÇß~’!¿²õF~åWJðÆO2d]+€ÉÔÌ™m8uêÆ‡Å‹7Ø7{öl|ÿý÷vï»Ú^sY_æÌ™Ø¼y³Û¯ÓRíQÛÅ ÆÍ ñÞA®–µþô;Y¥R¼w(**r{ÛÉÉɈÅÑ£GQ[[ëuí92lØ0ôìÙÓ-m­_¿K–,ñXûDDDDDDÔ¾0ˆq£ÊÊJlû¥Ǯ˛ÜFx€ÿx$ §ÞêSoõÀ? Cx@ÓC´krlû¥UUUMnÚ^¯ÇáÇ1gÎH¥Rœ8q«ÚkÌÓO?AƒµÙö‰ˆˆˆˆˆ¨íjý²vÂh4âJn)6þÒ´‰y•2žˆ¹wÃGñ{>öX¢?à‹õ‡K±â§"Tj.·½á†E#¾§Ò-+)?~~~~èÝ»7‘’’‚aÆy¬½Ù³gcüøñ8tè~ûí7DFFbîܹèÝ»·Sû­Íž='NÄ=÷Ü#lÛ¾};víÚ…’’ôéÓsçÎEHHÖ¬Yƒ´´4"44?þ8îºë.À–-[ðÙgŸ:„ûî»Ï=÷\ƒöM&6oÞŒ~ø¥¥¥ˆ‹‹Ãܹs&ôgĈ8qâ.]º„ððpÌ;ñññÂó³~ýzdgg#88III˜1cF“Ÿo""""""j=¬ˆq“²²2¬=*BAâò¹|q`A ^½?´^“–YWÅ¢’‹1{lö½‰ ¾.·_£ãÿNˆ Ñh\>×–ääd$%%†ŽÔÔTèõz¶÷á‡búôéX·núôéƒW^yNïwdË–-øñDZ`Á¬Y³wÞy' •JѵkW¼õÖ[X»v-Æwß}999€G}?þ8ÆŒƒ~øÏ=÷œÍö7lØ€C‡aáÂ…øè£ —ËñÒK/ ±¼¼ëÖ­Ã3Ï<ƒ7"66‹-‚^¯‡F£ÁÂ… qÏ=÷`óæÍX´hFŒáòsLDDDDDDÞAŒ dæUáðU…KçÅwU`Û³‘X55]VÒ<¼2}œƒ‹yZ@×@VMÀ·ÏGa@”Ê¥kÌVàÒ M³WQª©©Á‘#G0jÔ(ÀàÁƒ¡×ëqêÔ)¶7oÞ<ÄÇÇ#$$³fÍB@@öïßïô~{ >ÿüs<ÿüóèÕ«BBB0vìX(•JÀ<€èèh„‡‡cÊ”) Ãþó§ŸN§ÃÖ­[ñüóÏ#&&ááá˜?>ªªªšš ðóóüyó‹€€Lž<ÅÅŸvíŠŠŠ ×ë1tèPøúú"::Ún¥y?Mrƒªª*lK7ÁàäâD$xþî`LI#QXÊÅ*Œ?Ó†àÅ !ðUŠ‘©Ä×ÏEâë“åXüíMj¯F1šDØžnB¯nUðõu½ªÆ,55J¥ݺuCMM ..‡Â!C<ÖžH$ª÷yŸ>}píÚ5§÷Û“——‡êêjôêÕËæþ²²2ìÛ·çÎCEEnܸ­VëôãËÍ­[Bܲ}¥R‰ØØX¡²ÆºÿaaaP*•¨®®FïÞ½‘€3f 11÷Þ{/ú÷ïïôõ‰ˆˆˆˆˆÈ»0ˆqƒrM%g;77Ìý}±ôá0ø*/FÒLøßC%øæT9^¾7“‡úC,þ8ÈwÇû`þ—yøötãÃŽR®Êñ¬¦²YAÌPZZЉ'6Ø÷ /@"qmhVSÛ“H$BÕJSö›™‡/ÙZ⻦¦sçÎÅÈ‘#1uêTtîÜ/¼ðŒFççé©­­…Ñh„Á`€Túû›\.‡\nRgs0#‹±lÙ2œ9s?üð.\ˆ„„,Z´Èé>‘÷àФfÒjµ8vÕˆJ}ã™V¿H%V<áRc©°Â€ù_æá¾²p4³à«cÅáèÛ͉ÐA'ʼn«—*:ê_QãÇcÕªUØ»w¯pÛ¾};Äb1ÒÓÓ=Ò^qq1¾ûî»zçfdd **Ê©ýŽ„‡‡Ãh4"##£Á¾‹/¢¬¬ Ï<ó ¢££¡V«‘™™‰›7oÖ;ÎÑü8€³gÏ ÛÌ׋‰‰i´fýúõÃ+¯¼‚+V 55………NŸKDDDDDDÞƒAL3ÕÖÖ"í²sÁÆ£Cü!& sv“ ç®kñ?+¯â…/ò`4R±“‡ú;unÚ•ZÔÖÖ6éº)))n0ŒÇßß}ûöÅ¡C‡„ûyyyB•‰õ}WÛS(ÈÈÈÀ/¿ü‚òòrlܸUUU¼2í·w} n~–#FàÃ?DNNªªªpäÈTWW#00•••øöÛoQ^^Žƒºté"œß¹sgœ={ùùùÂÐ*Kjµ÷Üs–/_ŽŒŒ ”””`ÕªUÀÀ}Î5 ~øáB«ÕâÌ™3P*•ðóókô\""""""ò> bš©¶¶n:7Â+Ì¿î¸+…µ¾ä2¶Ÿ(‡lÀ)wÅù`Þø`ˆÿ;µHx€s}¸pSÚä fÿþýÂêFÖ† †Ÿþ&“ üã±oß>¼ùæ›ÐྫíuêÔ £GÆŠ+ðÄOàÂ… xÿý÷…¡>í·w}³_|111xá…0eÊlÛ¶ åååèÞ½;žyælذÓ¦MÃÏ?ÿÜ`Å¢qãÆ¡OŸ>˜9s&/^l³ýgŸ}C† ÁÂ… ñÌ3Ï@£Ñ`éÒ¥õæ…±§¢¢‡Â_þò<ôÐCؽ{7.\èpXy¯Æ_ º¿=Q#Ÿ[n[l³¾™÷›ï›?—X}.µúè[XX˜f«:¢)òòòñÀÿ‰ 36>7Êú™]1®.ÔbÌÒ+€Äj¼9©3âº6\q©û¼†Ãezv‘ãÍ;#é¶Nõ¶ï½Pék¯7ڹ؈ož2",¬K£Çz‹Ù³gcâĉ¸çž{š´Ÿ:žÒÒR§†¦‘ç‰D"”””÷… r¹<€€€Þê£ €Ñês“Åç°¸oyƒÅ~Xl3ÙØfý¹=î ÀÉz›Å`0  Â±éOcZfîý è‡×&†"Ä×v[j ^ïÜJKŽÔÅ(¬4 ³Ñ±˜QDDDDDDD-‰AL3˜L&Ü,¯àÜŠIöMÀ¶åøþlþ<:ÏÞ¹´®èG*aÚðÌ?•{‚“Âòº•|ĵ,1Í`4QYcp[{•Z#>ø¡ßüRŽ7쌑½ê†-õ k8l©945—–`&"""""""÷`ÓLž42 j1mÍ5ä|ÐÛímžé³'­ZµªYû‰ˆˆˆˆˆˆ¼Ǧ4ƒX,†²y£’Z…ZK"""""""j|5Þ "‘*w/<åy$ bˆˆˆˆˆˆˆZ_7ƒD"A¸¿r±ûæ‰ñ4¹Ø€Î¾ bˆˆˆˆˆˆˆZ_7“O'É*:ö¿Ë¤Cì"““+šË*Щ“Úý """"""¢F1ˆi&¹\Ž[|+œ:6¯Lˆ –ã¡~níǽSÇõô¯„\.w뵉ˆˆˆˆˆˆÈ9 bšI.—#!ܹUˆ6-ƒÞh‚D ¬x<ÛžD|׿/Mm0š°åX™SÇ&„¡P¸w9l³O>ùÄ­Ç5÷"""""""oà ¦™ †õP@-©môØôœ<·)ššºàfhvÍ‹Æ? Cˆ¤I××Ô1wS.Î^«iôXµX‹Ä[”¬ˆ!""""""j% bÜ {·ÄûÝtêØoOk0|Ée¬K)ÁX7_Ìc‰þøùõ[0o|äRç&1š€í'Ê1ê+øö´Æ©súúßD·®áNKDDDDDDDîÇ Æ :uê„û{UC,rnÆÜ’J~]€ûÿ™…£™Õµ\ŒÆcïËѸ¿Ÿ¯ÃóÉ®ÁC+®âùÏsQ¨qnn±È„ûziÑ©S'§Ž'"""""""÷“¶vÚ‰D‚¡}cw!g5NŸwîºÿ³ò*&&øâµ‰¡è(CL¨M‹À´ÌªÇ_/ÑaÉ·7®€±Ô×÷†ö†DÒ´!Pf¹¹¹HMM…N§C`` ðä“O68îæÍ›HMMEee%”J%FމÐÐP€ÉdÂÞ½{QXX©TŠ#F ,, •••8pàJJJ`0лwo$&&6«¿DDDDDDDÞ„AŒ›„„„àÑØßpñD(´F™Kç~{ZƒŸÎWà鑘{W0|b$öø}‰éêZ#Ö.ÅŠŸŠP©unb`Kr±ÇV"$$Äås-ÕÖÖâÇÄý÷ßàà`äää ++Ëæq{öìÁ}÷݇   dggã‡~À”)S„ ¨ÿþƵk×ðã?bÊ”)P©T9r$üüü Õj±}ûvÄÄÄ K—.Íê7‘·àÐ$7‹Å18cC¯4éü «’‹1öWðyZnjô¸©Ñãó´2$-½‚w¾»Ù¤îê|ÃÆB,nÞ—;//DDDØœø7??þþþ DEE¡S§N(..Ž1·Ñ­[7àæÍ›‹ÅÐëõ8yò$ÒÒÒPUU…ÊÊÊfõ™ˆˆˆˆˆˆÈ›°"ÆüýýñÄþÈÞ— š¦Uqä–ê1ÿË<ÌwSŸnë”ÇýÐì¶ŒF£S+. †Çét:!‰êOH¬×ë!‹qóæMe•)Xõko”èT­Ò@Yfôº„ÑÃG5¨@i*¥R‰±cÇ"99b±!!!JÿŠÇŽ;0aÂÜyç8xð |||0a¡"F"‘àĉ(//‡R©Äøñã!•JƒœœlÞ¼J¥aaaÂ9–mûøø¸åñµ4÷¼Bw­=Q#Ÿ[n[l³¾™÷›ï›?—X}.µúè[XX˜f29·ÔtSUWWãÛS°î·[‘_ëçÑkY •W`F¯ßðàÝ# T*=vÊÊJìÞ½?ü°Ç®AÔ¥¥¥ˆŠŠjínê JJJ„û0¿&—Ëå‰4 ôVMŒVŸ›,>‡Å}Ë,öÃb›ÉÆ6ëÏíq[ˆÀ¡I¢R©ðà„$̉¿‚Û| Z캷uÊÃs}3=ÂTVV C„~ýõWDGG»ýDDDDDDDí‡&yB¡À„q£x;Îca——¶vúZbƆdbÒí2 0ªÞ!wÊÊÊÂ… ]ºtÁ°aÃúôéƒ3fÀßß¿µ»EDDD^†A Q3åååá/ù ª««çÎÃùóç±f͈ÅuÈ¿ýöž|òÉzçÅÆÆbýúõ._ïüùó˜1cF½mwÝuþþ÷¿7ñQKaCDDDm΄ PZZjsŸT*EPP‚ƒƒÑ¹sgŒ3cÆŒñ誄û÷ïB³óçÏ#''QQQ».µ=œ#†ˆˆˆÚ½^‚‚üúë¯8xð Þ|óMÜ{ï½8xð Ç®Y[[ks»V«õØ5‰ˆˆ¨mbCDDDí^ee%^ýuœ8qÂ#íßqÇÂ$³ððpÄÄÄxäzDDDÔv1ˆ!""¢A§ÓaÇŽi»W¯^X´h¢¢¢ R©Ð¿¼ÿþûÉd¹µ]œ#†ˆˆˆÚ…½{÷ÂÇÇ8}ú4Þ{ï=äååÕ;&==Ýc×7nÆç±ö‰ˆˆ¨}`ã&&“ F£±µ»áX,†H$jíny”FŒ©TŠçŸ¾Þ>¥RÙJ½""""ªÃ Æ ŒF#òòòpåʯ”O¡P &&aaa ưµG~~~ ¶%$$4ضzõêKHOž<¹^ˆóç?ÿgΜ©wÌûï¿áǰ½4uçαsçÎ&÷233ñùçŸãäÉ“(..†¯¯/úöíkóqØ£Óé°mÛ6¤¤¤ ++ ˆˆˆÀ-·Ü‚aÆá¾ûîkðFõãéÖ­¶mÛ†ŠŠ |ñÅØ»w/rssáç燤¤$¼üòËÍzœDDD ƒ˜f2 ¸pá-ZFÓÚÝqÈ××o¼ñúôé‰DÒÚÝ!""òN‡5kÖÔÛ¦R©ðôÓO·R\÷ÕW_aùòåõVd***ÂpàÀ§Ú8{ö,–,Y‚¬¬¬zÛ³²²••…äädìÞ½o¼ñÂÂÂì¶sýúudddàµ×^õkׄ텅…())qéqut bšI«Õ"--ÍëCÐh48räzôèµZÝÚÝ!""r«ÆægY°`ðÁ›lݺï¿ÿ~³Ú8}ú4fÏžÝèÐéS§NaÑ¢EXµj•ÝcL&¦M›fs_ÿþý›ÕO""¢Ž†cTšÉd2µ©w‚JKKa2™Z»DDD-nñâÅX±b…×Ïé¦ÑhTó¸J§ÓáwÞiðXCCCÑ»wïÔO:…Ÿ~ú©I×0`@“ûIDDÔ±"Æ ¬ƒ~ýú!00P¸_]]ôôtTWWC"‘`àÀv+Rt:222PXXˆ‹‹Chh¨ÍcF#®^½*”GFF"::ºÞ?W%%%õÆ´3„!"ò¼Æ~×râôÖ¡ÓéðùçŸ#00°Á|.ÞäóÏ?Gyyy½m"‘=ö €K—.á£>rØÆæÍ›‘]oÛèÑ£ñöÛoC,#55óæÍ«·ß¾}¸ë®»íŸB¡@dd$JJJP[[‹[n¹ÅÉGFDDDƒˆETT*++±wï^dddÿ” ;v ÑÑÑ?~<Ô…*‡©S§ Ó鄶Ο?Üy爎޶§§§#%%¶«W¯¢¨¨Æ ÞÊÎÎn0¹ ¹OSn[ç0œi9«W¯FRR"##[»+6ýç?ÿi°íá‡ÆÜ¹sÇG`` Þ~ûm»mØšCæé§ŸÞ¬6lºwœa¿upcËþðÌš5 ¾¾¾êÞlâ÷.‘kÄxˆÉdÂW_}…7nØÜŸ••…Í›7cæÌ™J¥8pàŽ?nóØÂÂBlÛ¶ O=õBBB‘‘ï¿ÿÞæ±•••øé§Ÿ —Ëï¶ÇCDDõ¹»ÂÐÜ_Ô6ÝÞ½{áãã îk×®aíÚµ †Üèõzœ>}Úkƒë‰uàÎ;ï¬w¿GÛ¸|ùrƒm‹/†\.îÕÛíÚ5˜L&‡ßƒ¯¼òJ½û*•Êa?ˆˆˆ¨!Îã!%%%vC³²²2á¨óçÏ;<Ö`0à×_uêX n•O:uêÆ‡Å‹7Ø7{öl»AQ[g2™†0æýÝšÚ>9G"‘ ** o½õ¢¢¢ì¿xñb+ôªqF£ùùù ¶›+h¡ÓéP]]Ý`ûÅ‹qîÜ9áVUUUo¿X,vÂ(•J§û@DDDö1ˆñ•JåÔÑæwîÌ1—»r¬§$''#66G­·¬&Q{å( q&`qõ2î!‹mVˆ–––:ÇŽï¿þ*T™„„„ ÿþèׯŸPaãëë‹éÓ§ãĉ8sæŒ0a¯Z­F¿~ý0pà@têÔÉcëøñãðóóCïÞ½‘˜˜ˆ”” 6¬Þ1GŽÁ–-[P\\ŒÛn» Ï=÷ºuë½^5kÖ -- ……… Åã?Þ`•†íÛ·c×®]())AŸ>}0wî\„……á‘GÁ«¯¾Šþýû¨+³~þùç±{÷n¡oëׯGvv6‚ƒƒ‘””„3fxì¹ ¢öÍQµJcÇÙ;×<ôÃr¿åp[stpþ˜¦)//Çwß}gó Ë¿[ݺuk°ÿÂ… X°`âããíÎáæ*™LÖ`[vv6ª««ë͵rË-· ==½Þqß|ó T*‘þóŸ¯5räHdffÖÛöÙgŸ!88=ôP½ªÝŠŠ ܸq½zõjÊÃ""""1ˆñ°îÝ»£{÷îØ´i®_¿ŽN:aòäÉ6 „  T*qôèQÀÿüÏÿØ,QV*•1b°}ûvuU5qqqž{0ÿ•œœŒ¤¤$u+7¼ûî»ÐëõBEÏ7pñâE,_¾!!!X·n^|ñElܸ …]»vÅ[o½…BàÝwßÅm·Ý&¼{·eË$''cÁ‚ BzzºScã5 .\ˆY³faôèÑ(**‚V«õÜADíš3áŠå}“ɃÁNƒÁà0ˆ‘H$ÉdH$‰D ‚{ÁKc©vtwß}w½çÐh4Ú<®_¿~Âê‚ì.¿|ðàA£GæœsÎ9®¹ ‚ ‚Ð5Dˆéü¢K(4MÓņ®ÛÝN§³Ëm…––6mÚÄ /¼ä±ÒØØÈ5×\ömÛ((( ±±‘¢¢"ý¸¦iìÞ½›qãÆ±wï^¹å–[ôãû÷狀º€^½z¡ª*{öì ™ïÆjµrèС ØþöÂÌÈ‘#9r$×^{-¿üå/©©©!--­».ƒ §1árÀ.=åeßÑ+õ=¢,ÍÝ2®16š^±û±Uýž’¢[é;“É$´c~èâÌ'Ÿ|Òí}&$$ðÛßþ6ìñ»îº‹»îº+ä±°qãÆ.“••Å£>Ú¥¶3fÌ`ÆŒaÏ;·KýLž<¹ÓjŽÍ|AA8:DˆézõêTý| lN'F£‘¼¼¼ˆç×ÖÖÒØØøÞÐE*km³Ùô²œÄÅÅw8”——Ë4:°víZRSS;„ %&&2|øpÖ¬YCAAUUU,\¸‰'’››Ë»ï¾‹ªªLœ8‘òòrl6}ôS¦LÑÇüeD˜4iýë_yøá‡IMMeëÖ­Œ5Šèèh†ÊÒ¥K?~<ªªòç?ÿ·Û øbì =z4ñññlݺ«Õ±Ô· ‚Ÿ®ˆ0.—‹ŠòoÈËüƒ§CÇKl†…Ü–y”úY9£±X,"Æ‚ ‚ œfˆÓL™2¥ƒØâ¯šÍ5×\ñüU«VéU“f̘²j’Ÿ}ûöéU“Î9çœ^$ÅÅÅÇíFígåÊ•zµ¤öL˜0 pçw2`À ÄK/½Dyy9Æ cîܹ˜L&rss¹å–[xã7xõÕW3f “&M êëÞ{ïå…^àî»ïÆívÓ¿òó󉎎æÖ[oeîܹüò—¿¤W¯^\pÁ”••>5kÖ0þ|ìv;¹¹¹Ì™3‹ÅÒ-óá‡C(QÆívS~x ý²ÞG1„NÛ˜âbécx‹âÞ}Æ`6›E|AA8!Fè2Ï<óLØc3gÎdæÌ™¼ð û™5k³fÍ {<>>žx ä±äädž|òÉ }þrà½zõêpL¡+„Ë=å߯ª*‡K÷Ð7k!Š!r¢Üªj76¶°q“ÊJ7UÕ@#-ÍDf¦™ñcâ˜8>žôôð?ÁƘhúð6‡Ê’Èí3£ÑV€aFAáÔB„˜ï ©p!‚pj*$©¢¢‚ìÔŒá¿Ëkk=¼ù¯Z–,k@U5|§kþÿq¨ÄCñ!'_njæ¯/fò¤D~õËL²2Í!û3ÅD“Õú ÷Ò»wïˆ!J‚ ‚ ©ƒ”¯îaöíÛÇ[o½¥çiiiiáõ×_gÇŽÄ™ªª*>øà6mÚ¤ï{뭷ذa.—+¨mKK +V¬àã?Ö÷}úé§|öÙgz~A¡s"•Šö'Xâs¢¬á¢¯ßØÌM·à£%õx½j›ã[ªš†¦ú÷i¨ªŠÇ«±rU=7ݲ—õšÂö“l Êó1---asØ„²[AA8y!¦Y³f .¤´´4è&¹²²’Å‹³xñb}ß¾}ûxã7ؽ{·^Ê| h׬YÃ[o½¥‹1 ¼þúëlÚ´)¨ÔµËåâ믿æõ×_§¦¦æ{˜¡ ÂéI 7L]m%éÉ[¶}ÿƒ:æüO)6‡7@p9"¼hª ƨº£j6›—ÿ_ÿ~?üwvjâ6êj+C–ÑAAN=Dˆé!l6[§ewîÜ©W¯Gå¹y¥¬+ íÍhŒŽ&Áø1ÍÍÍÚ+‚ ‚ œüˆÓC¸\®.Ý;>Ww‡ÃÑi[ÿ9]i+‚ tP'---ÄÇì Ù¾ºÆÍïŸ. E -¸¨û4U?¸ÏëQ™ó?©©u‡+>ö;š››#Ú*‚ ‚ œˆÓC$''w(aÝžÔÔTrrr(((ˆØÖb±0lØ0FŒÑi’ƳÎ:ë(¬AÑ4 —Ë…QÝ…Éj ÙæÕ׫°Û=a¼_¼47¶PYQMYie¥TU×`k¶¡jÞ61&@˜ÑTZZ<¼ü²cYb£1x÷tYäAAN^DˆéA®¼òJFމÉ\œJQÌO~òŒmîî'NdÊ”)DGGwè';;›Ÿüä'$%%ŸŸÏW\Arrr‡¶‰‰‰\vÙe 8°f$‚pú*Ùmà>›ÍF”:Ä´²ÊÅ’OkCz¿¸=^*+jhljÂãqc0€Ñ¨ ©*v‡ƒÆÆf<Þ#ùdŽˆ1|\EUµ+ä˜Ñʆˆa©‚ ‚ ©”¯îA¢¢¢˜>}:ƒæã?Æf³a6›¹ä’K8p`W‹¢(Œ7ްxñb½ÊÒ„ ?~|1gàÀäææ²|ùr¾ýö[ À´iÓˆýþ&)‚pšác\.ÉÖ* ªC›µëšðzý¥©–hÔÕÕ£ª*F“EQPCÛRQZ­DY£@óÕ60`Õê:®½:«Ã˜ÑQ4TÐ UÊZÊZ ‚ ‚ œüˆÓƒ466²xñbJJJô}n·›E‹‘‘‘Á%—\BFF†¾ÿ³Ï>cçÎAI{ Ù¶m^x!ƒ Ò÷ñÅ•µþî»ï(**bìØ±L˜0AnÆAÂЙ7Œ¦ix½^,±¡“¨~Ñxä»:@Œq8 Édò‰.†FQPtaFõzAQð)1m‚Œ¦±¶°>¤­¢¶„Oê.‚ ‚ œHhR¡iÿþ÷¿ƒD˜@ªªªx÷Ýwu!eÅŠlß¾=d外–>üðC***رc«V­ aü¸ÝnÖ­[Ç–-áK­ Á¼üòËÝÒ¦§m¡çiŸÅh ¦¤Ô"Ï‹†ÇíÁd2ùÁÛ&&“ £ÉEÏ£ªGý–”„NÈn4›ÃÚ)‚ ‚ œ:ˆÓCÔÕÕQSS±Íf£´´€={öDl«ª*{÷îíR[€Ý»wwÑRáûBÓ4Þxã >úè£mJHŽ×>‡ÃÁÿýßÿa·Û»Ù2Aè^ºâ £Ƴ°¶ÆTªÚ'ƨ(ŠA[ôÑÔqŸÉ„Ùd JÖëc4**ÃTÆSŒ"À‚ ‚ œˆÓCÄÆÆvÈëÒEQô¼‰‰‰öéOÎ*Io¸¶ÂÉCii)½zõ¢¾¾þ¤,/~,ömذ††¬V+çž{nȄӂp²IÈh/Æ´¶¶†m{¤:’oé÷ˆ ö~‰ü1ÍÁ%­5UUQˆ,¶ˆã㫯¾âŽ;î`úôé\tÑEÜvÛmTTTPVVƸqãX²dI—ú)--åÒK/eÙ²eG5þ±ž ·Û͸qãxá…‚ö?öØcLŸ>ý¸û?9Ú¿£ ‚ œJˆÓCX­V.ºè¢ˆyZ&L˜@JJ Ó¦MÃjµ†m›ŸŸÏСC?~úˆÛo¿¯×Ë7ÞÈõ×_OJJ ©©©GÝ—Åb!==½ÓD÷ÿó?ÿÿÿýï£>ïT§ý¼OT‚ ‚p:!Éz{#Fлwo6mÚÄ®]»p»Ý  ÄèÑ£ÉÎÎÖÛfeeqË-·°yóf¶mÛ¦—(ÍÍÍeôèÑAU–¢££¹ñÆÙ¾};_ýµ•œœLAA#GŽÄb ×àx©®®¦°°›Í†Õjeòäɤ§§ðöÛoÓ¿öìÙÃØ±c8p åååâv»INN¦ªªŠŸýìgA}j𯆠(**Â`0ÍäÉ“q8,\¸Ÿþô§ÔÖÖ²zõj®ºê*€°}Ûl6V­ZE}}=^¯—Aƒ1nܸ°6ú‰tž¦i,_¾œššL&“&M"+++¬ííñx<”––2yòdEaÇŽœyæ™A× Tÿ‘lª­­eݺu8¢££¹ð 1 a¯Y$[;³/ÔXß}÷üç?ÿ¡oß¾L›6—_~™[o½õ8þ… B÷J¬h/¶©««Cs¯$3å 4· *{÷²PTd÷çÙÕ“õ £ÙP%‰àd½É{‡.¾´ušFNvQÞÞCç‡DSSÏ?ÿîþ222xíµ×:m·qãFŒFãQŸwªÓ~Þ'ªAA8!¦‡q»Ý¸Ýî ›}ÿ¾öx½^<OPÂÞÀó= TUÅívãñx"žß¸\.>ùä.¹äRRR(..fÙ²e\wÝuFš››IHHà†nÀ`0àr¹øôÓO¹ôÒKIMM¥¤¤„¢¢¢ý–––RYYÉu×]‡¢(AsŠdK¸¾£££™‰u…õGÊO·‰1ª[#*J *]Ý¡|µAÁãö`oq ¶yÜh•“¦LJ m·Ëq®?o´;wÒÒÒÂÌ™3#¶ûàƒxå•W°Ùlüâ¿àšk®¡¬¬Œ™3grÛm·ñÁзo_î¾ûnfΜÉC=ÄÅ_ÌܹsY½z5‡2oÞ<î¹çjkkùðÃùðÃY¶l™nÃC=İaØ;w.{÷îÅ`00~üx|ðAjkk™9s&³fÍbýúõ477sóÍ73kÖ¬6ïß¿?(§¬¬,èøêÕ«yùå—9|ø0C† áÁÄ`0t˜ÓܹsYµj/¼ðÍÍÍŒ5Š•+W²hÑ"²²²ºÜ×ëí0ïH¡Ô¡úýÓŸþ±„¼v‚ ‚p:#¡I=ÈW_}Å›o¾É®]»ô‡^MÓØ·o ,`ÕªUzÛÒÒRþñ°iÓ¦ ü,^¼˜ è}Øl6^{í5V®\©ççß[Â5kÖðê«¯ÒØØØí󩬬$11Q§ÊËË#66–ºº:½ÍàÁƒu£¢¢‚äädÝU¼wïÞ!=u’’’°Ùl¬[·Ž’’’.½5‹Ô·Á`ÀãñðÕW_±qãFìv»îaÔÞÆ@:;Ï?VNNIIITWWwÙö+V°oß>Þ~ûmÞ}÷]Ünw‡ðŸPý‡³©¢¢‚¸¸8=DÍjµvúÉÖHöËX‚ð}£iZ‡O¸6þõöËúúzð¬"=éË#'yB‹›ç›‚Añçˆ -Rii±JP’QÿQ½^ªjjñª^4XS[²^ƒAãüó„״ví{ýtWò'¹ï,ÚÖ­[¹þúëIKKã¹çž ú½œ7oçž{.—]vYÐ9Ë—/çƒ>à׿þ5O?ý4×^{-Š¢pÇw¾ß½—_~™¸¸¸ óRRR˜8q"?ü0×_=Ÿ~ú)ï½÷ž~|Á‚\ýõdeeñüóÏýn²~ýzžxâ ý³}ûvýØÞ½{yðÁ9çœsxæ™ghjjâ©§ž 9§²²2}ôQ’’’˜={6+W®<¦~:›w áú=Þk'‚ §#âÓC8NV­Zñ†ø‹/¾`ذa¤¥¥±|ùòå¨ý:tˆ;w2räH ƒn(ÛÓÜÜ̺uë¸ä’KŽkíñz½„¸Ðáá\UÕ.…HÅÇÇsÝu×Q\\Ìž={øòË/õð£pÞ=‘ú®®®fõêÕLž<™””t¤HÂÑœçñx0 amlßÚÚŠÅbá§?ý©.~ìÝ»—½{÷2dȈý‡³IQ”°9…Â]³p¶º\®ˆö¹Ýîˆù‹áDp4bCg¹aü"Œæ^IFòÆà¶ª›Pß™™.›‘ÉûTèaIþ%@mMqq1ÄÆÆ`‰ò}W¹\.l-6ššlhšª‡"Yh\}E6Y™¡ÿ{óØ öÉ &¿^II ýû÷Ûî‘GáÒK/%&&†ÇœÃ‡ëž?ûÙϸí¶Û€`¯¨íþó&L˜À¥—^ øò´¥¦¦2räHFŒÑa¬¤¤$ÒÒÒX¶lÕÕÕhšFII‰~ü¡‡âòË/'>>žG}”²²2ý¥F ?ÿùÏ™={¶¾ýØc±q£ïßäæÍ›QU•ýë_,]º‡ÃABB‚Þ6pNï¿ÿ>n·›û￟ ª*øÃŽº â¼ ×ïñ^;AA8˜Âf³u)Ħ©©)hÙÝm»“¬¬,*++©ªª|9ZTU ûV2++‹ŠŠ ª««¨©©ÑÅ&UUùæ›ohmmÅårÑÚÚJ~~>çw ¸\.¬V+n·›ŠŠ Àç™ÑÜÜÜißõõõDEE‘žžŽ×륢¢"¢—ÑhÄãñD>áFÓ´ˆ×,œ­Ùn,ðyÇøûoOYY‡Ò·«ªª8pà€¾][[«—d„®ÎÛ%\»ö‰xÃ{Â|ÞA„Àæ4ûW}ˆ¶*í*i¨ªŠ¦©45µP^^IQQ Eq¸¬‚††fTÕ«'÷UûlÞzë-ÆŒÊ+˜5kV‡ð P|þùçÌ™3‡iÓ¦ñ׿þ5l»˜˜˜¶t•ÅW^y…O>ù„Õ«WóÑGéÇçä¿.þû³Ù|Lýt§}áèêµA„Ó ñˆé!RRRÈÌ̤²²2l›øøxý†çÌ3Ï䫯¾ ÛÖl63xð`½í¾}û"Ž˜hµ»°Z­L:•Õ«Wãõz‰‹‹cúôéa ¬V+\p+V¬À`0––¦—ôv:lÛ¶œœ¼^/›6mÂf³¡ª*gŸ}6QQQL™2…Ï>ûŒèèh’’’ô›ØH}÷ë×’’Þyç¬V+YYY^† Æ¢E‹˜:ujØóŒF#›7o¦©© «ÕÊ´iÓ0™LTVV†´Ýn·ëóÛ·oÇ3**Ь¬,<È!CÂön.±±±œ{î¹|öÙg˜Íf¬V+S¦L!&&&ì5«¯¯ikWì 7Ö¨Q£X·n»víbÆŒA}ÑÚÚJŸ>}ßÛ몪*òóó8|ø0J˜,áèìÁµ«e©·ƒ=a¾ u*†¨D4{%˜;VÆÉH·0÷é!ÌþÍ6Tï‘d»¡<]üyd@;²¯Í, ƒ¢ðÇg†‘žÚÓO­?D½=“˜¶ê@oÿz{™ÓÕc&==›o¾™—^z‰›nº‰éÓ§c6›9pà<ðÀqõ}ðàA6oÞÌ„ 0¼þúëÔÕÕ‘Mbb"Û·ogëÖ­~c> ø^ †w'ãÆ#..ŽgŸ}–ßüæ7ØívbbbBæè=z4Š¢0wî\®¾újžxâ‰cêè0o›ÍÆþð¦OŸÎùçŸßi¿ú†Â]»ØØX {öìaòäÉ”””pûí·sûí·ë^³‚ ‚pª"BL¡( W_}5K—.åàÁƒ²³³¹øâ‹õ›‘óÎ;ðÅ´·÷¤IJJbÚ´iºËô!Cp8z›@¬V+ãÆcäÈ‘=2¯œœ®¹æšÇBUËéÓ§þ n³Ùô O111üüç?×ÛùÝ¿ÛÓ¿ÿ°®çáú6›ÍL:µË6Ž;–±cÇ„=ï—¿üeÈý™™™!mœ_û~Ï ×¤¹äççë¢F á®Y8[»b_¸±233ƒf^߉'µ=ztÐöðáÃ;@‚О£X:;ÖÞ&\8G£EÈ IDATR&+x]àuƒ±cYéÉ“Rxàžþ<õì>45t¸Qx1Æg‹Á ðèï2õ¼ôÐsq6ãm®¦Ñ3‘$‹%¤8ÇöÛ9,óT䦛n¢wïÞ,X°€×^{¨¨(†ÖC¯«TVV²jÕ*æÏŸÙlæç?ÿ¹þ=uÛm·ñì³Ïrï½÷òüóÏë —\r ;wî䥗^âŒ3Î`èСÇeG(RRRøãÿÈ_ÿúWî¹ç222¸ì²ËB (ýû÷çþûïçÕW_å•W^¡  €-[¶u?¡æ¥‡Ìvž‚‚‚}^Ÿp×.))‰k¯½–Å‹“““ÃÈ‘#‰‰‰Ñ_Ô‚ ©Lwß™u¥?¥“õÀ}†€}í?þãþmÿº±Ýº©Ý2¾¦¦fcw¹mÛl6þö·¿%Â9rdP¸ŽÍfcÇŽ8L&#GŽ$>>>d.—‹={öP[[ øDÕžöx½^Š‹‹õðœœúõëbR__ÏÖ­[õíóÏ?ŸÛo¿]wÕîil6QQQ˜L&6oÞŒ¦iŒ3æ¤ï[8µihh //ïD›!U<:–ýíKTãYY„ñŸç¬GsÛ0Äç„m³bU5÷>°›ÍÓ©÷ "L|œ‰?ÏÁÔóÃWk=ø›ööGI¾ŒQg_ŒÅbÑ…%&ÿºŸHÂËé&ÊóÜsÏñî»ï²zõê o”c¡°°{W_}µG¼oA„ÓEQôTàKºï¿7³X,ã€fÀ xÚ-5@m·®¬°ø!à8û´ûÚ¯‡£Ûb¿Å#¦>Ú㯀ÓUvíÚÅ®]»ºÔ¶´´T¯&q²PTTÄ·ß~ ø¼'&L˜pJô-‰#’7Ëñî ¬ŽÔEÖz4k2Jˆ%€ ÎKgùÒ ÌûûAÞþW nÒû¥m EQ¸òǽùÝ}ƒÈÈÿ†ß]]D]µÆÖ’‘D×Õ“Ñ»Œ>}ò0 C“"…%®^2B0‹-Â`0`·Ûùä“O˜8qâq‹0»wï&--MO6/‚ ÂÑ#BÌq¢(Ê)å&û}—:th¸h÷tß‚ œº"¤´?¦in·[O$ݾrX ð`³Ù0±ŽÌ”/ºfOkjùj0% X’Á†Ð?©)þ߃ƒ¸õæ<>[^ÅŠUÕ””:¨¨p iY½bè“ÍùS2øÑÔ ²²"W#ó6×á.ÝΗ%W£LØm6Ö¯_ @Ÿ>yÆ"Là\¯U¨ï}dNoJKKY¾|9‡ƒ±cÇrÏ=÷tK¿7ß|37ß|s·ô%‚ ?TDˆ9N¢¢¢1b«W¯î¯åd#::šáÇŸR‘ ? ºâÝÒ^ñW³Û*±°«q?Q¦fŒ ƒñˆÀ ©*^·¢ÌQDÇwÍ«Ô/ÂT5&cIìC ¸š!*Éç%†¬L+?»¡?»¡O—Æ …jo±g={j‡RÑ’‹Ñè³¹¥¹™õë×¢( ¹¹}BŠ1þëÓÕ\1"ÈœžøÛ ‚ ‚pò!BÌqb47nN§“ÒÒÒˆ¥4O$f³™ììlƱ”³ Â÷ÍÑxÁhšFkk+ uXXE¼u;‰É®!0XÛ£“ÑˆÉ ] íõ‹05Íil,›MB] ¤lDÓT¯LÑG9Ë®ãi¬Á¾s-UötÖMÀ`tc6›õïî–æfÖ­[äIç†c ¼GLg‚Œˆ1‚ ‚ =1Ý@LL ?úÑhnnîà²`0ˆ×K< ‚ œ¬„a4MÃëõR]]M´á²âwDu¯x(Âlªø çOAyy9{ŠKÔ¿. *R÷ Žâ=8÷}E½;…÷Lãh˜Í¾Jz‘ăÁ ÷Ñ^ñÛi[Ÿ»ˆ1‚ ‚ =Ž<•w&“)¨R’ ‚Ð9…ù—ÍÍÍ´4~M¯”eM=çy¨¹š‚D˜IçÎ **м¼<6n˜FJýGd¤{}U/ªªb0š @9¼-´ìÚ„»ª” g‹öÍÀ£uÆO(1f„Ideõ ù"À`0`41›Í˜L¦‚Œˆ1‚ ‚ |DGGãp8ˆŽî9ÏâSbA„B8¦½SUU…Õø)9ÛèÆª!QÌ18Lù¬-ºŽ 4CÏ©¥( g™ÀšÕõL>ë Sðå‰Q½xÝ­`0`0YPLGW•ÆÓTGké>ZË¢yÜ|]>ÏŽG1š:ˆ0~Ú‹1[·|FÒ¸f’â«1šT mùdT—ŠÇ¡b³gÐÀyX†éž‘íC˜DŒA¡'Ñ4 «ÕŠÕjÕ·Ȉ#‚ |ïDò„ ÜWRRLFÂBb¢Ë¿Ãq9Ãù‘q•ÕÉÉ9’p×l63~ÂXµÚÆÅîÂb6¢˜-x5ÍíÂë°¡£LQ(&ŠÑŒbhó>ñª¨n'ªÝ†·¹wm%^{š×£‡;E›[ñª ©¡E˜@[â5 FÔsæÀÅýŽxæ­FŒVˆJhmöÚQQ{%‰™ãˆ÷Ù"ѯ ‚ BOðC_!FA8¡„ G*.>Hï”7±F5ï6%ô2`¬žGiémº£ª* LR‰ÅÜf³ÁˆÑ‹f4£:mh­¼­4oš×ƒæq/ÛÖñzÐ<Åk|/zõÊ ìp nwx1&?ÏÁEç×`6u1/™¢“C®w Õ‡wãtþ„´´´¥¯ÛWZqFA¡û9¾ vAA8J½ aÊÊÊèôÎ aüĦ›È4¿Lyy9ªªRYQDfòÄÅÔvh«˜-ã“1'g`LHŇbðvi¬fo_Ø…Ú—_q}ûõAÓ4ÜnOÀÇÛíaÄ™M\|aU×E˜@;F2rŠ°ØæQUUÕ!LÞT ‚ ‚ ô<â#‚ œ0B õõõÄ›—b®;Š~`ßþV ¿hfÛõuªª=€Fzº‰ä$#†G3q\<ú[»ÜoB¦FkÙö}w>ýû¬ 6º&ò FƘ8ÔÖbhݤã%1Lc…šÖŠcqÅMaÔ9¤¦¦0cÆÅ,Y²”¢ƒ‡‚ $b¢ÍãÆåV°9¢inM ¡5—zï@âSÒ¯_?²²²:EEEº£( i©&î»ÓM”åÈus»5^œ_ÉGKPUÍ7oM÷Ð@ÓP pù¥)ÜþßY˜ÍGa5ÕKIÅUddÅb±Gª)Ú"BŒ ‚ =‰Åb4ãs%ö´[j€Ún] X'`;ðCÀqöi!öµ_G·‰"Ä‚pÚ!BÌÉK¸|0þå¡C‡ÈMù &Kç?'‡Ë]<õl9»÷8Ž/Da@óçÅeèh}0—^Y–n™a¾)J‰ýr¬V+ž¶\0&“‰èèhâââHNN&===dùÆÀk(Æ\wÆØÑGÚ¹ÝhûÊg  úª!yUÜ7 x¼*&³ož®V•U¸Ýn¼me®4®¾2+¸o{MðöIž/æ“O>aåÊ•!­X±‚/¿ü²ÇÆ^¸p![·ní±þOWW_}5Ï=÷\‡cÍÍÍ<ýôÓÌš5‹óÏ?Ÿo¼‘Õ«WŸ+AáûC|¸ÃþÆÆFn¾ùfÆŒÜ9sˆeÇŽ¤¤¤œ+AáûC„˜BÓ4—pÛ"5®xŸ7 QNB/yif r£I‹7‘•àûÓT4y¨µyØRâäP½»S±¦”Lf/ªæ/—“ß·Ï ¿aAˆÄ‘œÈ9®jª[}¡I~/ßÉ(maIíE—vÛ¡I´ %îTVDbÃ[»’ æx1 8m ±­ (QIúþîÉgÿþ_9j´ˆ hLŸÊC÷ êÛÓPŠÓiÀo8)D–®——Ǻuë8|ø0¹¹¹úþ²²2¬V+ééé=6öÙgŸÝc}Ÿ®²eË.½ôÒÇÞ~ûmÎ<óL~÷»ßéûòòò:´A„Ó bzˆ’’2î[l¢ÖcE1Ö«%#ÞÌM’¸hH,ùé–ˆ}¨v±|7¾h Öæmë(¸?h¶¤sÏ’jþzy}Ä3F„Ó_õH¥£6AÆh4‚FH&Pti/Â(Нª¦µåˆ ðŠQ”£ Í9Ú’ÕíC:Û64ÛSˆ±W£D%âÿâ7› ¼ù$>ú(k×®ípüã?æ÷¿ÿýqó_ÿõ_Üpà ,^¼˜mÛ¶ñ‡?üsÎ9€wÞy‡E‹QWWÇðáùï¾ûèÕ«×q)‚ ǃäˆéªªªøýJ…2§58ßK@^˜Äh#÷OKgŽyü÷¹ÉŠ0ùén”Ìò;ò¸gj* цÐye Ð`IçÉÏ=–3æë¯¿æÂ /ì–(€Ù³g³téÒnéëTW„`4ÍñxJŠ©-?Œ/Ÿ‹¯ ³†Ùl ›ÆÐIî“Ù ç…ñ/5M#µ“ïcMõ•÷KWE‹PÕ¥¬V+•¶!¨^š³.è³ÙÀÿ{h0½?–šKÿ3bˆŽR°ZaÀ1Ü|c_–~8‘Ç>s€ƒ¦á<ðjk+UŽáX­Ö€C¡ígë‰ ??ŸC‡ ÝRU:D~~¾Þ¦°°ææf~üãså•WÒÔÔĦM›‚úY±byyy\zé¥dffÒÚÚÊgŸ}Æ Aƒ¸îºë¸è¢‹èÛ·oX;¾þúk<ÈÔ©S¹òÊ+1,Y²UU_E°Í›7sÎ9çpíµ×’‘‘Á矮?Ýyúé§>|8ãÆëpÌétR[[KTT¿ûÝïôkø¯ýë˜Æzä‘G˜šÈŽ-±sËX¶x2<8˜ýÛUÓÓ4¶ÐR]Íóïõ¢E;‹¨¨¨°ã‡²íD“——‡Ë墲²€òòr,‹ž¿Åív³gÏÆGtt4±±±œ}öÙõ3hÐ † BJJ &“ »ÝŽªªäææErrrØP'¯×ËöíÛ™8q")))ÄÇÇsÞyçár¹(..|»I“&‘‘‘Att4#GŽÄápÐØØIBèÓ€¥K—RXXÈ]wÝòxM/Iô_þò®¼òJ-ZÄ]wÝÅË/¿”ŒyÙ²e̘1ƒ›o¾Yÿ{ïÝ»—gŸ}6¨¿Ë/¿œ«®ºŠ`µZñz½¼ñÆ<ðÀ <˜ôôt~ô£ÝC3A„®#BL7¢ie•µ¼¹3& ºQ›·ŠâóV¹èÌXÞü¯lz'ur£ß²“̼z]o.P‰éˆgŒÁ¨ðöÁ8J+k»õÚãñ°nÝ:n¿ývL&›7oî¶¾A8ý %Thîð%”FŠoMÔAFÅíö†¬šÔ^t åÓÔló‰/"Œ¦ªŒ9+1¢-xìçÒÙ\;Ãåra·Ûiii¡©©‰²²2Þÿ`Ë žþ› ÕíÖsÚ-šÇMÓ7+i-ÛÇ_å°f[<ÿ~=‡¢©©‰––ìv{—ö)ÌX,rrrta¥¨¨(Ȧ±±MÓøè£X°` ,àóÏ?Çívõ“‘‘´””D¯^½X¸p!+W® ™`ÖOss3ªª%ï5™LdddÐÐРï ü7Édê`ÇéFee%üã¹é¦›ô0¬öÿ^_Þ±cÇÏ”)S¸âŠ+øüóϨ®®æ7ÞàÉ'ŸdĈÜyçìØ±ƒçž{®ƒ@6lذ íÇc·Û2dHOMSAŽÉÓÔ××ó·/-¸C[N‚6ÚÖ'žÃó×öÂlì¾Øz«ÙÀŸ®Èä¶…ål<äð ˜8ÊÊß¾tòDrÉÉÉÝ2æ¦M›HHH`РAŒ7޵k×2aÂýøìÙ³™8q"›6mâÀäääp×]w±sçN–,YBee%£FâÞ{ï%1ñÈφ X°`uuu <˜;3œ_ŽÇ믾ʪU«p¹\Lœ8‘_ýêWú›­Ù³gsíµ×²lÙ2vîÜÉœ9s=z4š¦ñÎ;ï°lÙ2:t(wÜqÇ&>_N4…ðßQS&'ó÷ù‡ô|.m™PhuºˆN‰Bõ¢WNòåã HÒëK ¼­hØšízR[@_¿à‚ÈUq4—=hûXB·ýK¯×KMM-[¶Çþâ šZ|ßé{ õ-ÅÀæ­*óßhæ¿o‰O›gŽÙLÀ/N¸Ái­(ƶg3j«ƒ·6ögóÞÅ@³þùÞçXc}ž3 qÑœÑ7‹‚aHKKÅh4†¬ ä·ýDå‹éׯ›7ofìØ±1}útý˜Åâ /»òÊ+uoŸ® ( 3fÌ ¼¼œ½{÷²|ùrzõêÅE]Ô¡­×ëõySµ»F£“)üíÕ©ùx™?>---üýïçÿøà»^ï½÷÷ß?W\qf³™Q£FÛ·o_öìÙ@ZZóæÍ#99™‚‚bbb¸ûî»9묳¸þúë#ÚÐÜÜ øÂÖ«k ‚ ÂÉ€xÄtªªr¸ÖÆ×µŸGŠî¡âóŒédæO33»U„ñc6*̽<“ì$s»0(Å»Zã)«iô+V0eÊ&NœHaa!Ï‘°‚¦¦&^{í5~ýë_óÆo““ÃìÙ³)++ã±Çã…^ ¼¼œW^yE?çðáÃrß}÷ñòË/“””Ľ÷ÞKk«ÏÿoûåååÌ›7_|‘òòræÏŸd×ïÿ{&L˜ÀŸÿügýÍØo¼Áš5k˜3g/¾ø"‹…ûî»/È^AN,Š¢ ¶6Gl3x`,}úX;„&išF}]–(S@R;OCð¶Él¤ôP9j›WÏ+Æ·Þ¯_ ƒÆE´ÅãVr¬¢ŒÇãá»ýy÷£5lÚ¶ŸºF¯ŠÇ«bŽŠ¡ßà‘ ?ç<ÌQÑ|°ÔΨÀfWQ]N<õxZPv4·Ë7'Õ‹ê´ãi¬Åyp'_|ŠíÛ/°7»øÓ’!|²%sT4ÃÆžGßÁ#0YcôñêmlÚºŸ÷>ZËwûvø¾#•¤˜žs@J°ùÝyÉAaPz˜’ÙÈ›; úÛ¡ãÁét²aÃÎ=÷\ÆŒƒÇãá믿>bKB÷Üsƒ "99™k®¹€n¸ììlrrr˜6m;vìÐÏñz½Ìœ9“aÆ‘••Åý÷ßÀêÕ«±Ûí,Y²„Ûn»M׿馛X¿~}m_|1—]vgœqQQQ¸ÝnÞ{ï=îºë.úõëG¯^½xà°Ûí÷µ¡{P—Ý©WB ÝnÿUŸ6F dTT¯JUEF“¡ƒèr$LÉ€Á`Tî?„׫,uŒ IDATva4Mãž;óÃÚ€¦â±ÙÛú žCÄÓ"$½Õ4òŠ >]½…†&{Èv1 ‰ 5E1°q“¿¼T‡ªšÕaÃ]WAëá8öoǾç+ì{¾ÆþÝ7´VBs9Ð4…ÿ[×-ÅÉ(ƒ Æ> «¾ÉÆg«¿¡²²J·óhæÖÓ˜ÍfrssÙ°aCPXøJ~1‚/¿ü’²2_E)›Í¦ç% Gkk+{÷îÅf³áñx(//Çd2%3РA¬_¿žêêj6lÀjµêÞœBd®¿þz>þøcÞ}÷]ªªªXµjü±~ßp<$&&rÞyç1wî\Š‹‹±Ûí¬[·‡ÃÑ – ‚ Âñ!¡IÝ„ÝngKu”.„zHÒÙ}¬œ;0>ì¹Ûйïõªssé¨dî»r YÉoú:cJÿx ²›ø¦¼5ÀŸ›þö&+v»=(èX(,,Ôo2N_N‡¡C‡²fͽT¤oØ#%yyy8ýÍ–ÿM¦ŸÜÜÜ Êf³™áÇsèÐ!JKKQU•ßüæ7z¿»=øåÌ3Ï Ú.//Çëõ2pà@}ŸÕjeÈ!”””Ïe¡›P“ÉD³#ŽèÖkxO‚ /Hcø°X¶nó‰Êš^ËTÕÃáÒ ââcIJNÄl2麎¢€Ûã¡®¶žæ¦–½G Z?« ‰ /ÎÒµ¥šFg2&“©ÛòÃØl6¶ï:Hcsçˆ1 ‰däô%Š:îøïx 'œ °GãÆsË(nêƒËÜ;¢ã§¡ÙÎÖo÷“””Hlll×úÉÏÏïÆOAA&“‰ 6ÐÒÒ¢'Ë ÌéÒ—ËÅÁƒÙ´i.—‹ÄÄD.¼ð°¡-ãÇçË/¿dùò娪Jvv6_|q·ÍïtgĈ<óÌ3ÌŸ?Ÿ—^z‰¾}ûòÔSOqÆgtKÿ?ü0úÓŸøÕ¯~…ÛífÀ€ôïß_ö ‚ 'bº—ËÅî*; ôP}ÿ=ø“#—J|`Á~*b3°Ä)|Rébé“›¹iB³gäk=º?ÑìsùÕGÕlЬQì©q’–æÆl>öDÁ«V­¢¡¡Ë.»¬Ã±»ï¾;äÍj¨‡‘®< ˜ÍfÌf³~óÿâ‹/ê®à]Áår¡ª*^¯7(^ßb±têÒ,Â÷‡Ùl¦ÚчtÇ¡ˆBŒ¢À³OɬŸ~Em½[÷  ÌóÒÔØBScs‡\2úz&)Ñ̳O ¥³¯&oSM­CÉ8Žïö¹aœN'{ö•µ©©.ãpñvzç '5½·~¬Wn?FËç=ôÏÞÃÀìÎÃo4Jœ£8èý1Sg$ñÍîÊã•ï@²Û·÷@ç !666l®˜E~~~HÆÏðáÃ>|xÈcþð˜@âãã™6mZØþÚŸc4?~<ãÇïò7ÞxcØþOg~ûÛ߆Ü?nܸ孆×^{-äþøøxæÌ™s\} ‚ BO ¡IÝ€Ãá`eQ@…¤€’Õ9IfÎî9ßÀa%Åè;Ç…9»7¯ïtqþãùך¼j×ݾÏ΋£w‚I‰ ¬¢´¼ˆãrÉmiiaÓ¦M¼ð ,_¾\ÿ,\¸ƒÁÀ¶mÛŽ¹ïÆÆÆ ²¢š¦±{÷núöíKff&111lذá¨úìÝÛ÷ ±}ûv}ŸªªìÙ³‡~ýú³­‚ tþù¨¨( ƒÖ&4OäêI½{GñÇg‡b2Ò!¬H QU)hÝ_ªºÝºÑ¨ðÂßFѧOLıUg3š½»2Bs»"FD ÝÑ4 ·ÛM‹#¸$õ®q»œ¸]vïØtÌÇØ±c™záq™®äÓ¯.ä«ï†QV›Nƒ-ׄG5ÓèL¤¼%m ÓXÛü;9rÁÅ?a̘1DÅÿ.íÞñn—·ËÁ®íÁßµ-¶VÜn÷I“FAáTGsæÌÁãñ0zôhž~úiýaæÌ™<÷Üsñøã“í‚ =‚ŒÁ` =3’â<ò,‡QÜv0GöN9« ‰÷Þ>›{ØÁ×[üUŒŽˆ,ùcEÀõÑg%ñÜÜ‘ädwž/Bm®Am©¢´eéƒsƒ’õö„1bÔD¶~³EƒöS«ÕJ^^^Pž­@ÂÍÿXÆAAŽŸî¾{ìJJ'ëû ûÚüÇýÛþuc»uS»e|MMÍÆît±®¬¬ä§ŸXQµÀYø¼PÞ™•ÁàìÈÂÉè¿h;†_‚=kP@u{°®aæ°¾v0Ñ–ÐÉw•µpóÒ=Y°ÞŸWãå v233m¢‚pŠÐÐР'‰NB‰K§ÓÉ·_½Îè~‚%CB.]ùIÑ4XöY%úË>öï÷—dBŒÛÿŒ8î»{ Óÿ?{wU}.pü;[f²ï! ’@Øwˆ""‚BÜ@´ŠÛU©·nUkµvq«Uk¯Š^©J¹¥"Z)‚ #›°†²ïËì3÷8ÃL2I&É„Dû~ž'Ïœ9ç·Î@ræß2׻߅v«CÁ.vêïfä”ÛÑétÎLëÇÖÇíõÝq|îÜ9Ö~ø…Wmq¸õºK‰‹‹kSW‡ýø¾¾’’ÞÙ°£KõÝvÃeÎéž …¢Ó> !„BxËÏÏoÐXK«G;`kulw9Æå¹ë.×q9g÷p®õq{|D1¾¢T p Ä8îG£C¼˜šÔzJ“Âåã‡KyJ­š!±|VaDùÇøÝÒáË‹ ñó°{“›Ï4BÑ'´Z-‘—PÝðázìúþæS(`ÞÜÌ›;€ÃGêÙöE9_ï«¡¼ÜHIi3ØÄÆù3 ZË”ÉÌÈtïý0ÙÝÔL­%ŽÀ˜ÙÎ)>}©£ 'ým‘]!„Bˆÿdˆñ…ËX×Q(!þ¿Ä­§&9˃6A…ü‚uÕ›Û-/Ä_Réad¬³(„è#žÖ‰i}.11‰ƒû&35|XôàÅ%W#ÓCÙÅ KgLEG°T£Ð¨8Ñ0—qã’<ŽéîÈ_ŒÎì¨îŽÖæé* â!„Bø†ìšä#*î;)@©TPÝØ~ÀÄÁ5ëŽKçi³ Òääö?lT5˜œéΗÛÒ!„èoîu:AQs9[Ù2eÈnÑc·uþ;´·˜ÎÃXü¥MÉ„ º®eݯþh€ñÔ¦ÖçûC»…B!þÓI ÆGÔJeKÐDq>ˆ¢PBE½±Ó¼®yZo9ÝúX­‚kGsߌèvË+¯7¹ƒ\22"FÑO´7’$--ãe³0›¿Mh5‚Ýæ©ˆ^e(<Œþø7˜mZN™n$55µÓÑ0Þðåe­ëv^<f|„‘­¬…B!ºO¦&ùˆ°¸,-ì˜jtªBϨÁ•W(Ýó€ûÔ¤– ògå„0’Â;^wæt¥þûéNîÓ“l&kW»%„>ÓÑôÇ5•JÅÈ1sØ{ð,3Æj¹èÄ8ç€ö»ÅBÓá,Ì•E(5-"÷W/dôŒù¨T*g[Ûs¡Fœxjo˜B!„è;ˆñ­ ‚(_h`áÄŽwæð¸°î÷ÇIaîÆôAÞ­•°ûTJ¥ŸKyß—e–@Œ¢ÿh/HAdükdLz‰3½Ýjm "(=ï×S抳4ÎÆnhta¾«›Eô°[ˆˆˆðÉh_òvÊ‘a„B!ú Äø€B¡@k· P©ÚŒBÙWnÆj³£ê`}•RÝÃB½‘*îÆ•)(½¼y¶ÚìäÕZP|¿[“ÛȽYnÂ…}Ê›Q1©©©äæÎ'ÿä§ O­mI`·c³˜ …2ÖÆšÂTVØìù~tãɦi(®$--Í­õ;X8·½:Û[¬··ëB!„Þ“5b|@¥RlÕ£Ó(Ý×tQ€A«åÓÜÒó'†ª]Ô?·Ž eýÕñ,H ò:°%§k°¿Ëb½-kÏhUJÔõΡõBÑt´ëЄ ©nžGîÁçµã§µØ­flÍ X›ê±™ tgK8»ÍŠ©â, 2©ß÷æÊ³œ®Kt^?Ö<‹æ2~üøvÛç‹`Ä) ñCj«B!D&Ðh4„ш÷]ŠJPj”¼¹§‹µý ¿»8Šôh?‚´J®J âý…ñÜ>6ŒM×Þ‹ÕÎêÜJ”jåù—¾o‹½ÉL”Ê€F£éao…¢g¼U¢P(˜.¸‚MÇ®Âl÷#·ù&”C~Á”)Sº4ý§¯t¶FL{×~ÈvìØAvvö¯wݺuœ;w®Íù£GòñÇw»\«ÕÊš5k¨¯¯ïIóúUO>ù$Ë—/owVAAÓ¦M#//¯WêwX±bEÞWMMM¬[·Ž[n¹…Ù³g³`Áž{î9:Ík³Ùøàƒ¸í¶Û¸ôÒK¹öÚkùè£Ú¤+((à¾ûîãòË/ç®»îr{}¼-ÃA¯×síµ×òÊ+¯t¯ÃB!zLMòFà`…zªv»ûô¤š  >Ì,fùŃ<æ©å­ùq=nÇ»‹i F¥t_øW¥„Ʋf&DZú$óÖ[oq×]w]ðz}íBôãÇòZ áKéééœ á_;¿Š9zŸü“þ Ô̸´zR×¢±°è›°[-Ø­V°ZZŽmŽcë÷Ï-`µb¶À±ò$—&SXã³b–á1Æ]´€Aƒ<ÿ¾ö%שBeÅç00¾×ëìŽò³çGuþØ:­åææR__Ï¥—^Ú×MéÐ¥'Nœ 33“™3g¶¹¶nݺ>hQÏFªªªxàˆç»ï¾cݺu<÷Üs<ûì³æÝ¶m999¬\¹’øøxöìÙË/¾HTT³gÏàÌ™3¬\¹’Ûn»Çœ­[·rÿý÷³zõjÒÒÒ¼*ÃÕŸÿügC!„}O1>àççǰ;Ûö[ õ£Ábw[$Wå§bÕÞj¦‹ y@`¯´ádioî¯ÆpD«…Á;' ˜p… ?¿Žw\êˆ^¯gÆ \{íµx·pð…ÐY»ìv;ï¾û.,\¸°Z(„ðFëEe]¿IOHHÀ`˜Aî7`·Ã‰3œ8€FÃàÍ Ž­'*¤™ð &5F4 v›“IC“^Gu½ŽŠ† Š*#)®Äbkû'pä¤+Úa¼ÓeEgºŒéN[ºš§ül)¥gŠº\ÁÁÁ¬[·®M ¦¨¨ˆ¼¼¼~u/ለ|ðAçó˜˜bbbX¹re§yçÌ™ÃܹsÏ—,YB^^_}õ•3ˆòÁ0sæL–-[À-·ÜB~~>|ð¿þõ¯½*Ã!++‹¼¼<,XУ> !„èˆñ•JEJB8ak1Ô…£ Õ`u|€øþžWÆk¿ãƒ•cˆÑú´þê+ßÿŽ€”Øïwwu EµBAuA9ÑšÒÇöhNÇÅ_Œ¿¿¿Z¸¸˜¸¸8JKKÑëõý®ýBˆÎÙív”í,Îk¶(9q6ˆgƒz\R©tîäÔ<í°a äçw=ãZnguv•#“šGppp›º.D€ª«l6{÷îåÌ™3477ÈøñãIIIq¦)..&''‡ÚÚZHNNfòäÉ8pÀ9 äÔ©S >œéÓ§w«›6m"--S§NQUUEhh(Ó§O'::ÚÙÎÜÜ\Nœ8Ýnw þuÖ‡öÚi³ÙÈÉÉáäÉ“X,’’’˜:uªs$lGuö–«¯¾šO>ù„¼¼<çzKï½÷×_=6lpž3›Í¬ZµŠ¯¾úŠŠŠ  ÀŠ+˜?¾3ÍŠ+X¾|9[¶láÀ<÷ÜsL™2h blÚ´‰êêjFÍÃ?L\\Ëhãƒò¯ý‹üü|âããyøá‡;v¬OúX]]Mlll§é”ʶÓÍ###©¬¬t>ß¾};O>ù¤[šË/¿œgžyÆë2êêêxæ™gxòÉ'ùꫯ¼ê‡Bˆ K1>Îðà£ì,÷':\M­ÝõµåÑ28Š›Víç¯w&>Â7Á€²Zw¬9ˆuh *Õùm¯£q´F#—±h¸‰°°°Õ¥P(HJJêi“}®³v?~œÔÔT4 §NbĈ®qBˆ6Ú t,°Z­ÔÖÖvX®BÑòû@á:,°¥dgù-?í—QSSËÀQ«=ÿyl/HÓQ𦳢‚‚‚¸æš+ظñó.cºéJ@Æ5³dÉ\‚ƒƒûM°¥#J¥’.¿ürÔj5'OždçÎDGGŠÑhäßÿþ7Ó¦McÈ!477c±X3f f³ÙgS~²²²X°`ÁÁÁûŒ¥K—âççGNNgÏžeîܹ¨Õj¾ùæ¯ûÐ^;³²²0\}õÕØl6vîÜɾ}ûœÁ¤Žêì-:Ž¥K—²nÝ:g ¦¢¢‚;wò÷¿ÿÝ-£Ñh8p /¼ðZ­–mÛ¶ñûßÿž#F˜x~!í'žx‚Gy„{ï½×Lzï½÷غu+¿ùÍoˆŒŒ$//ÏyÏSSSÃæÍ›Y³f ¼õÖ[<þøãlÚ´©ÛÓµm6MMM>|˜¿þõ¯<úè£Ý*gÿþýÌ™3h™öT[ÛòûÇÕàÁƒill¤¹¹Ùã"×2žþyFÍ´iÓ$#„ý”b|ÄßߟŒ5Ù&j  K ¡Þlw[«E­RaJŒáº¿|Ë®Me戨Õ¹ëp%o:NÀ¨8ÔjÕùÏßb‚Õ Q@€Ò̼1AètºÕîk˜TTT••ESS:ŽŒŒ ç·}®ìv;Û¶m£²²µZÍÌ™3‰¥©©‰/¿ü’šš¬V+Æ cÚ´iØívöìÙÃéÓ§Q*•$$$‘‘ÑîùÖíre±X(..&##…BÁ¡C‡Ü1o¿ý6ÉÉÉ”——0yòdN:Eyy9jµšY³fÓa? åÖììlŒF#áááÌš5‹€€Ö¯_OJJ ùùùL:•´´4¯_7!ÄyF£‘Ó§N{¼¦P8'wý9¤p_ÎbìØlvA‰ÂÂ3¤¥¥¶ˆé-ãÆð:ãÍÂÁ:Ò:3qâÄÓ÷7®¿ãÇŽK~~>„††ÒÜÜŒÍfcРAhµZ´ZߎPu•‘‘áü1uêTΜ9É'HKKãðáÃ,\¸ˆˆfΜÉñãǽêƒ'f³™üü|–.]êõ9iÒ$¶mÛÆôéÓ±Z­ÖÙ[®½öZþ÷ÿ—üü|† ÆúõëªÖ®¹æçñ-·ÜÂæÍ›ùî»ïÜ1?ùÉOX²d‰ó¹Õjeݺu¼òÊ+ >ÀmúNxx87ß|3£Fà§?ý)ÿøÇ?(**bÈ!ÝêÓÚµkY³f ‰‰‰ÔÔÔt¹Œ]»vQTTÄO~òªªª tŸÂîxÏëêêÚbZ—ðÙgŸ‘••Ň~Øå6 !„¸p$ã# …‚a)IŒ:t„=•ñèJ ЦÙls¡¢@å§B72û>>ÍðÏNòë뇓>(¤Ku/iä¥MÇÈi¶5.¥òüHÇC€FIIîqjJê¸b˜á©£|úm¦Édâ_ÿúW]uòù石lÙ2ÓŸÆOdd$ÅÅÅlݺ•eË–µ¯22 Áh4²qãF’““1™L”••±lÙ2 …óÛÊââbç;RXXH||>‹ÅBnn®sØmSSÑÑÑ455±{÷n’’’œÃtÃÂÂ<žïÈöíÛ±Ùl”••-ßž:uÊyæP(œ7?)))dgg;_«¡C‡¶ÙVÓS?ŒF#ÍÍÍìÞ½ÛY‡Õjuæq|C××Mˆ“Ž‚0ŽcOçø6o?MMÍnùÁ•JÙN0ÆQ­‚0  Û÷¥¸cššš9°ÿ !!!„„„¸/ZO\Ϲ¶¹½m¤=} ê,ãXÄ·¥s<Ÿ÷Ò=ûÚ½ÖY¦µþ”±X,|üñÇ$%%1a‚‚‚ؼy36[Ëû­P(¸òÊ+)))¡  €mÛ¶Çå—_îUù~~~Æ6çÍfs§£k jµ›Íæü÷èéµë¬íµ `ñâÅÛÑY½méÒ¥,Y²„_|‘Y³f¹ôz=wÜq—^z)wÜq±±±ü×ýW‡ýœ[GÛl¶ ú…†cdîƒ>È·ß~Ëž={¼ ĘL&}ôQ&L˜ÀâÅ‹ç h3Rçܹs„††ºjn¯ŒÕ«WÓØØÈ›o¾é±ã¸Ù°a¿øÅ/ܾ\BÑw$ãC …‚Ñ#Ó™}"‹O äÄþ RÇ+ФÉì¸ t$¿@ ±c8a°ð‡œ*žÚršj;ájbC[þà–Ö©6˜©°)ˆ &4!’„³ çíÔ÷Ç%úSEä|œ‰FÌ’ÑVÆŒéó¾Z­Ö6;0™Íf ɵ¾é³X,(•Jç<ñŒŒ """¨­­Ål6̲eË(,,$??Ÿ½{÷²dÉ’vÏ·wSi4ñóó㦛nrÞœPPPàñ›³Ömoý¼½~øùùË•W^Ùiß»òº ñcÒÑ·²­ƒ0®i9pà yyûÝò´LGRºý¨TçGÇ(ÊV˜–€KË9»ó|ˣͭÎÜÜâ£>ò˜æèÑ£ÔÖÖºí@tìØ1ç)íIHHÀf³qôèQFíÓv{K£Ñxõ…—ÕjåñÇG¥Rñøã·¹ž‘‘ÁÖ­[¹ä’KœçvìØá¶PGe<ñÄ<ñÄnç^xáüüü¸ÿþû»Ú-!„½H1>¦Õj¹rz§jO°»$šï²Ï0d\,‘C"¨5X±»ìhÔrš5‘C#ˆÚ2J¢Én'ßhi¹6H¿JÉàïÓº®9ãz¬T@¸+6L IDATVEÅ¡“|³9»f§ØX4{\¶¬nOll,;w¼œ˜˜JJJ°Ùl„‡‡c³Ù8pàéééhµZìv»3]EEÍÍÍDEEqòäI´Z-ÑÑјL&JKK9r$&“ ‹ÅÂ!CïúíŸkÝ'OždРAnß%&&²k×.·éIÞj¯v»úúzNŸ>MRRv»‹ÅâqÀŽ^7hÙËb±\ðõ)„èMž‚0í_ßÜ[,jjjØ·7‡¼¼ýƒ®kÜŸ¢ä!s~ÑÞ–‘0 Àöýsv{K»]Ñ&(b·ÛÙ±}'õõõLš4‘ððpÔjµ3øãMPÆÓ¹ÖõxÚAÉ‘gìØ±pìØ±6e@K ÁÛ]‹Z—ÇŠóÝ^w‡¡C‡2lØ0m÷TO_e,K›Ñ):“ÉÄ‘#G2dçÎp~H6’€V«¥¤¤µZíü{È‘#GhllD§Óµù]<~üx>ùä‚‚‚œ»P^^ÎÅ_ìL§V«©¨¨àܹsDFFrøðaÌf3ÉÉÉ(•JRSSÉÌÌdÖ¬Y²ÿù@£¿¿‡}h¯cÆŒaïÞ½‡^¯G¯×…F£é°Î áöÛoçÒK/eðàÁ¯GDDÐØØÈÿýßÿqÙe—‘““àÜù¨=¡¡¡Ìš5‹_|‘ßýîwDGGóÍ7ß0qâDŸï’˜››Kff&ÄÅÅqöìYvìØÁ¹sçœïÿ=÷ÜÃøñãÛ¬[g³ÙøÍo~ÃéÓ§Yµjv»Ý9=J§Ó¡P(X¾|9wÞy'ï½÷óæÍc÷îÝlß¾·ß~Ûë2„Bü0ȧ½^ÀÒ©ÕTï¨æÛŠ@Žì=C\U3铨µÉjo³°®Û±B‰ŸÚÏ-X.ÁÜ9:•‚PÝy€Âoò±cgl‚†Wt}î»·t:—]v;wîÄjµļyóP*•477sàÀˆV«E¥R‘““C}}=:Ž+®¸µZMrr2EEE|ðÁèt:bccQ*•-¾öí£©© ›ÍƤI“Ðjµ”••y<ïÊ`08ë>~üx›oÇ´Z-±±±nÓ“¼Õ^?æÏŸOff&¹¹¹h4FåqÀŽ^7h™û¾iÓ&æÍ›çü&^ˆ×à‹cýÇ´!ƒÁ@EE%'OœäرãÔ×7x,£e1^DZÂ-0ã:e Àjµ-ÁGàå|`Áýw«ksö}CþÑc¤¦¥0t袣£ÐétÎéOÐ2ÁÛõW<÷£íT'Çù´´´v§:ôä—czŽ·iû«£GrôèQ·sK—.eÊ”)äææ’““ÃÀIrÙUÏd2qêÔ)öíÛ‡Éd"44”9sæ8ö)))±qãFâââÜ}ˆ‰‰áÊ+¯$77—C‡¡ÑhˆeÑ¢En4 C† !33½^OLL W]u•ówýôéÓÉÎÎfëÖ­hµZRSS–°°°ûÐ^;ÇZ­fÏž=466âïïÏØ±c#u:ªóB uÛºµÄÄDV®\ÉêÕ«yã7¸è¢‹˜5k–WeÿêW¿âå—_æî»ïÆl6“ššJJJŠÏ1 Àl6óüóÏSVVFPPcÆŒáõ×_w¾Îõõõnkñ8ìÞ½›ÿûßn‹ëBËvç±±±¤¥¥ñÊ+¯ðú믳nÝ:RSSyõÕWï¿7e!„øaðõ–7å):9v=§t9×úÇqÝñÜq¬ju¬nõ\YY™}!/Û“ý5oì6q°\ %þ!Œœš@hlµf&«cW¥¶£d\G»xÖ(ðS*÷SÒx¶†£_}GCe5Fƒž´H +¯ÊÌÓ{½BôGµµµn»lˆ¾ÓѺ0çÎã…?¼t¡›äS<ú[ÀÛ›#Þ,XÜÑߨîŽJñv¡äöÊìO£aú»M›6‘žžî65Iüg˜;w.Ï<ó “'Oîë¦!ĆŸŸß4 °–VvZ†5»Û]ŽqyîúƒËu\ÎÙ=œk}ÜŸdDL/š6u v{6ïd5SбÉDÞÎbÂcƒIIÔÍfÍV;V»‡Q2nSZž¨• Õ ÕJôœø !!!mÒ›Íf222ظq# ¬X±‚Å‹ó“Ÿü¤Ý:xà&L˜ÀÍ7ßÜa[Ìf3«W¯fëÖ­ÔÕÕ1tèPî¹ç&Nœè–®¡¡×^{¼¼<ÊËË)_h |üüç?gøðá¼ôÒK„……QQQA^^AAA>©Ãf³±ÿ~î¼óÎNÓ®^½šÌÌL~ó›ßÎ?ÿùO~øa6lØàü·_WWÇm·ÝÆäÉ“yê©§ äСCDDDxÕž®æÿóŸÿ̹sçºÜ·öòõ´ýBá ˆBqÁ9‚2W]up>ÐÒ‚0c\¯Ið¥o¨T*üüüˆå¢‹.â“O>Ál6£Ñhz¥ÎI“&õJ¹â?ב#G(**âÝwßE¥RÁ°aÃ|VGAAv»Ý«2333¹îºë7nÿýßÿÍ—_~É‘#GÈÈÈ`ýúõŒ1‚Ç{Ì™/11Ñëöt%VVyyy,X° K}ë(_OÛ/„¾ !„½¦õ(×瞎[5úz Sg#c: ÈH€æÂR«Õ¨T*ç‡Ù÷ߟK/½”øøx eúÇæÍ›Y±b›6m"))‰ââbªªªfúôéÄÆÆràÀòòò8uêÇgúôélÚ´‰ôôt燾M›6‘˜˜ÈÙ³g©ªª"44”™3gRVVF~~> ÄÇÇ“‘‘áœ2e³ÙÈÉÉáäÉ“X,’’’˜:uj¯úŠÍfã½÷ÞcË–-ÔÔÔ0fÌ~øaç(²+V°|ùr¶lÙÂxî¹ç˜2e V«•7ß|“­[·b·Û™5k™™™üùÏ&!!¡M=¥_±b—\r _ý5ùùù$$$ððÃ;§—yÓ΋/¾˜ììlŽ;ÆàÁƒyôÑG9xð ÿüç?)))aÒ¤I<þøã„……-£\Þxã ¾øâ ŒF#_|1÷ß?þþþÛo2™(--õØ?Gš·Þz‹Ï?ÿ›ÍÆôéÓÛ}ݹóÎ;™3g·ß~;yyyŒ7•JÅš5køòË/Y·n*• ½^Ï 7ÜÀ]wÝÅ‚ §  ÀY^CCõõõ$%%9Ï}òÉ'<ýôÓ½ýò6]]Ï<ó O>ù$_}õ•Ç4®}ó6_OÛ/„¾ ‹õ !„¸ Z/\G™¸>o}®/~<µ£u»[÷I\x ìÛ·ÔÔT”JïnmŒF#999L™2…믿ž˜˜¾øâ l6cÆŒaüøñ :”Ûn»­Ý¾F£‘ÜÜ\¦NÊõ×_Ohh(›6m¢¾¾ž9sæ°hÑ"êëëÙ·oŸ3OVV \}õÕ,^¼¸Íõ‹5kÖ°}ûvž{î9Þyç4 +W®Äl6;Ó<ñÄdddðÆo0fÌ^{í5¾þúkþøÇ?òÚk¯Q[[Kqqq»õt–¾¶¶–7ÞxƒŸýìglܸ‘Q£Fñøã;ÛÑY;kkkyóÍ7ùùÏÎßÿþwÌŠ+(..æùçŸçwÞáìÙ³¬ZµÊYçË/¿Ì¹sçX»v-ëÖ­ãܹsüå/ñØþ‘#G2tèPþë¿þ‹÷Þ{òòò6iV­ZEvv6üãYµjz½ÞcYV«•_ýêW¤¥¥9ƒ0ß~û-&Là–[nÁjµòá‡-S‘RRRœ#Gî¼óN>ûì3~ûÛß²iÓ&xàî½÷^ €Á` ªª ­VËc=Æe—]ÆâÅ‹ùÛßþÖî{äª+ùŸþyFÍ´iÓÚ-ϵoÞäëiû…ÂW$Ó™ÍfŒF#ƒ«ÕÚ×ÍBˆñf½•þ€é, ÓÕþ ß;tèkÖ¬aÍš5lÙ²…˜˜.ºè"¯ókµZfΜILL þþþŒ;½^O]]]—ËˆŽŽÆßߟѣG0nÜ8BBB %--²²2 åï{~~>Ó¦MÃßߟÀÀ@&MšÄéÓ§»Ô÷þÎl6³~ýz}ôQ†JBBO=õMMMn#~ò“Ÿ°dÉRSSÑétFþþ÷¿óØc‘ššÊÀùå/Ùn=Þ¤ ã—¿ü%#GŽ$<<œŸþô§TUUQTTäU;ùGŒADDË—/àÖ[oeРA <˜ °ÿ~šššøç?ÿɃ>HDD111Üu×]ìܹÓcüüüX½z57Üp|ð‹-âÉ'Ÿäرc˜L&6lØàÕkòÒK/ÑÜÜÌO<áû¬×£ˆzšZ¦Qµî›·|Q¿Bô”¯ï&½)OÑɱë9¥Ë¹Ö?ŽëŽçŽcU«cu«ÇàÊÊÊìþzÃo2™Øöïm>œOCC'cþüy²FŒ]P[[ë¼BñÃUUUÅ‚ عs§W÷B]MÿcöñdzcÇþô§?õuS|îÇÜ7!þùùùM+`iõhl­Ží.ǸnÏ‚2"¦±ÛíF´Zƒ»ÝNP`F£F#ß !„â?JAA ^UºšþÇ,44”믿þ‚ÖYXXÈ 7ÜÐîõ»ï¾›[o½µÇõôEß„—$ÓOØívΜ9æ|™ÂbçùO·ü›Ã‡Ž²hñ $Á!„BühRXXÈ„ ¨ªªbÕªUÜtÓM>KÿŸä’K.¹àu&&&’ÝëõôEß„—$ãCv»½Û úUWWóÿÛ̹â&MKÊÐdÀÎñã§ÉË=È?þñ K—]ãÜn°«ÔjµOƒ8ß|ó <ò³fÍâ‰'žðY¹­=óÌ3DDDpÏ=÷ôZíÕ»cÇ åµKHHફ®bÑ¢E½ºnÏwÜÁœ9sXºti¯Õ!„BôW ¼óÎ;üú׿&&&†%K–¸­OÒÓôB!D ±X,444´ …µÛ»´è¤Ýn§¢¬‚¢3g™4y,£G§Óøý‚‚cƤ³o?_ü{‘á] ¨( üýýIJN"..µÚ7oùöíÛIOOç믿Æd2ý(‡/\¸;Á@NN¯½öz½žåË—÷ZÓ§O'%%¥×ÊB!ú³Q£F±víÚ^K/„Bôˆñ‹ÅBUUƒ êv ãàÁ–m SR’1èõ465 VkHMM"gß~Ž;I`I@·Êÿæ›ý\2k&#GŽ@£Ñt« ‹ÅÂîÝ»ùÃþÀc=FNNÓ§OïQ™ý‘ŸŸrÅWÐØØÈúõë{5sÛm·õZÙB!„B!úžb| ¡¡ÈÈH6±£V« @í§Ál2·\Rt‘f³ÙLNNƒêöô&‡}ûö°aØ6m_}õ•[ æÞ{ïåŠ+®`×®];vŒÁƒsß}÷9·ììzg6nÜÈ–-[¨©©aĈÜwß}ÄÆÆb·ÛùàƒøüóÏ©­­eäÈ‘ÎkŽzgΜINNÇ'..Žûî»Q£FyUïèÑ£©««C¯×ãïïϽ÷ÞËõ×_ÏçŸÎáÇyê©§˜8q"‹…µk×òå—_b2™˜1cwß}7þþþ<ýôÓèt:~øag¹ûÛßÈÏÏç7¿ù ÷Þ{/ .dþüù–õì³Ïb³ÙœSÃL&W^y%×\ss*—^¯gñâÅüõ¯%..Ϋ~ !„B!„è=½·ØÅ³ÙL`@÷Fª8´¬ ÇŸF£ÑLpp0µšãÇNà§éÙôŸºÚ:ÌfsÊ€–iIŽEÒf̘AVVV›µq^}õUV¬XÁÚµk1b<ò^_oχ~ÈÖ­[yì±ÇX½z5—]vaaa¬[·Ž]»vñÔSOñúë¯ãççÇÃ?ìl[}}=k×®åÎ;ïäÝwß%==ßýîw^¯ëSUUEdd$þþþÎsO?ý4Ó§OçOú“3 ó—¿ü…’’^{í5^ýuJJJX½z5³gÏfÏž=ØlçwRÛ½{7—^z©Ç:;*kúôé|ûí·Îipû÷ï 33Ó™ÿÀÄÇÇKF!„B!ú Äø€Ýnïñh˜ä!I$''’—{ŽÐܬ§¹YÏGÈûæ ñ ±hüz6¥¨+ëÖ´Ç`0°gÏ.¾øb&OžŒÅbá›o¾qK÷àƒ2jÔ(¢¢¢¸çž{ s.~ëÍuO¬V+ëׯçþûï'--¨¨(fÏžN§Ãl6³aÃî¿ÿ~’““‰‹‹ãÑG¥¹¹™¬¬,BBBxðÁIOO',,Œ¥K—R]]Mqqq§õ?~œµk×rÝu×¹]›?> .dèСhµZš››ùôÓOY¹r%áááDGGsë­·:ƒ#S¦LÁjµrèÐ!***8sæ Ó¦MkSogeMž<™ÆÆFN:ÀÞ½{¹ýöÛ©««ãôéÓäææ2uêÔû'„B!„â‘©IýÈå—_Ì¿>ÿ’œ}ûÉÙ·ßy~èÐDæÍ›ÍÿýãÓ>l]‹¬¬,t:Ä`00räHvíÚÅ”)Sœé\V(Œ1Â-àÑÙuOJKKÑëõ¤¥¥µ¹VRR‚Õju»¦ÓéHOO§¨¨Èc½±±±èt:ôz½Çú6nÜÈÆQ(ÄÆÆrÍ5×põÕW»¥1b„Ûóââbl6?ÿùÏuY,š››–˜fΜIVVcÆŒ!33“‹.º­VÛ¦þÎÊ d̘1äåå1dÈöîÝ˳Ï>ËñãÇÉÎÎ&))‰ÜÜ\~ö³Ÿµÿ¢ !„B!„¸ $ÓOÔ××áÀìËfP|¦;*ödíeöì$%&$$„˜˜(ÊË+û´_~ù%µµµ,\¸°Íµx•Jå1ŸJ¥B§Óµ[ng×çÔ%O#{L&6› «Õê6:ÉÏϯÃ:ÚjÞ¼yÜsÏ=øùùy½Àq`` ¯¿þ:!!!ÓÌž=›?ýéOÜ}÷Ýdff²dÉ’n—5}útöíÛÇ´iÓP©T$$$0cÆ >þøc.¿ür***=z´WmB!„BÑûdjR?QRZ‚ÝnÇh4ÌÕW/ 8$üÓ^Ì IDATƒÑ€Ñh 5-¹OÛØØØÈ¾}ûXµjÛ¶msþlܸ¥Rɨ®®æ“O>qË›ŸŸObb¢W×Û‡Íf#??¿Íµøøx<è<çH›œÜ½×ͱcRWv™0`ìÙ³§Ý4ãÆÃ`0°ÿ~Nœ8Á¤I“º]ÖE]ÄÁƒÉÊÊrNoš:u*lß¾‰'úlËr!„B!„='˜~Âd4a6›±Z­øëtøùù¡T*9{öV«³ÉDBBß.¸úÕW_ÙfjPhh(£Gf×®]hµZòóóÉËË£¾¾žwß}—ææfçº2]oOHH3gÎäÕW_¥¨¨ˆææföìÙƒ^¯' €ùóçóÊ+¯ŸŸOMM «V­",,Œ‰'öÎ âZ­æ†n`õêÕäææbµZ©¨¨   À™F©TrÉ%—ðâ‹/2}úôv=Þ”5`Àbccyï½÷œÇ”¥7ß|SÖ‡B!„Bˆ~F¾*ïëQ«ÕÔ××—à¼V^QƒÝz£‘à`¢"#¨¬ªî“vîØ±Ã¹[RkÓ§OçÃ?ä¿ÿû¿ dÖ¬YüÏÿüUUUŒ1‚—^zÉ92£³ëy衇Xµj<ðf³™””† ‚¿¿?+W®dõêÕ<õÔSX,&NœÈóÏ?ßáô£Þpã7âççÇk¯½Fyy9áááÜpà n¬Ë.»ŒM›6ñóŸÿ¼Çe]tÑE¼ÿþûnÛpϘ1ƒœœ&Ožìû !„B!„è6_Bõ¦V‹•ŠŠ2ŒF3fdÀoû,V«•É“ÇKLt4G°gOn·ëºù§Ë0`@·ó{ãÞ{ïeáÂ…ÌŸ?¿[×…è©ÚÚÚN§º !„B!úžŸŸß4 °–VvÀÖêØîrŒËs×\®ãrÎîá\ëãöø,ˆ S“ú£Á€ÙlÆbµ¢Öø¡Õj)//'0ÀµZMqÑYlV+f‹™ãûº¹B!„B!„è&™šÔÇš››P«544¶LKЉ‰aß¾}äImm=eßï”d0 &<"”šêº¾l¶B!„B!ºAFÄô±³çÎ-A›ÍÆàÁ‰Fô†–«ÍŠÅb£®¶ƒ¡e÷¤´”!}Ùd!„B!„Bt“Œˆ¹Àjk«9SxŸ~~~456£R)±X, Föd¾ «Õ @RÒ ¢£ChÖ7j Åb±0dh#F ãø‰c„‡EPV^É×_çõqÏÎ[µjU® !„B!„?Vˆ¹ÀL&3á‘ JZ­ „„„¢T©Â OÐÔÜDLL4ÅÅÅÄÅÅa0 "oÿ~ z#eåUÔ×6÷e—„B!„Bá% Ä\`ÑÑ18vl:yò£»ÝÎÈ# §©IÍb ¡©‰“'Î`69RZ£&((µRÍwß@¡P\ð-š…B!„BÑuˆñ‘?eèržéAÍè4JÌf3§ª¬ú.0aÖ"(¨ÒªFv” à¬!€ cMÌëÕj!*!™÷? ìr7w9‡B!„B!|Eëí#:Œé4 zjm!ÎkªÐÁTGLã݃aœÕŸ?ŸSØ2JÆ`4@\˜ÄÑ„B!„Bˆ Äô‘Aš2 e·$‹ÍŽ9póšR¥&04 ¥.*çùCjô&+½…®«»àíB!„B!D÷I ¦DiõX­6Ìf%uVüC¢:ÍcS²ÿT=f³›ÕÊôÔ€ ÐRá‰Õjå¯ýk_7C!„B!ÄŒbú€Va"H«ÆhlÙí¨Úèåb» ö6-Ó“¢ü‰Vu’Gô7z½žwß}—æfßîve·ÛY·n›7oöY™ÿû¿ÿKCCƒÏÊB!„BˆÿtˆéUe( 6»ƒ.Áë¼yçTX¬vŒ ,”éI?8:Ž‹/¾Ÿ–ëØâ¼¦¦½^ïÓ²…B!„Bø†bú@´¶ ›Í†Ñd¢¢ÁŠ.4Æë¼8r¶£ÙŒÍn##M¦'ýÐ( ’’’|¾åøñãÇIMMeРAœ:uʧe !„B!„ð ÙvçóÃB°Nã±PiÔ¡TuámP(É=i`ôà z#ƒ¢PQÓlí¥»«¨¨ ++‹¦¦&t:DGG°~ýzRRRÈÏÏgêÔ©¤¥¥QRRBVVf³™ððpÊË˹ùæ¶›hw”îí·ßfÈ!”••a·ÛÉÈÈ`àÀ¶çí·ß&99™òòr&OžÌ©S§(//G­V3kÖ,bbZ‚`ÅÅÅdggc4 gÖ¬Y¸¹JKKÉÊÊÂd2ŠÙlv^ó”ßßߟ={öpúôi”J% dddðÖ[oq×]wõ¨ï®, ÅÅÅddd P(8tè#FŒp^_·nÉÉÉ”””`·Û™1cƒ êôš«ªª*vïÞ^¯Çßߟ9sæØá{ „B!„Âb.°xUiË´$£€fͺ:¹(§n±ƒÁh ÀŸ…c´¼›íÛõF<1™Lüë_ÿ⪫®"""‚ÂÂB>ÿüs–-[†J¥¢¡¡–/_ŽR©Äd2±uëV,X@dd$EEEœ>}Úc¹¥³X,Œ?ž°°0Ž?ή]»¸ñÆ;mÅbaâĉ„††räȶmÛÆ7ÞHpp0$++‹E‹¡×ëÙ±cW_}5!!!äåå‘ÍìÙ³Û´ñª«®r¶ñÌ™3íæOMM¥¬¬ŒeË–¡P(°X,>ë{k………ÄÇÇ£V«8p Û·oÇ`0 Óµüë2 Œ1‚‹/¾˜²²2>ýôS–/_ŽŸŸ_‡×\ÛñÙgŸ1oÞ<¢¢¢0 hµÚNß!„B!„îdjÒ¦µÔѬoÆ`ÐSÝdEæýú0U¦ +ôôzšš›HŒ°÷BKÛ*++#44”ˆˆ ¤ººÚ™føðá(•-ÿ¬JKK '22€øøx·÷¥S(„……0tèPššš¼jB¡ 44€””üüüv–S__﬿¹¹™Ý»wóé§ŸræÌjkkÛ´1,,ÌcÛËFSS»w令¨Èc`¢»}omûöí?~œõë×óÑGa6›Ý¦') ¢¢Zvæ0`!!!TTTtz͵AAAÎt:…BáÕ¿ !„B!„çɈ˜ Ìn·S[[Gc³Sµþø…¶ LtF¡TóÏ}•Ü4#¬e‘ ‡Ájµ¶ ¤˜Ífgà¥õš'6›Ícà¥5oÓ9êpÔÓY{\µ>çúÜÏÏØØX®¼òÊnµ±£üË–-£°°üü|öîÝË’%KÜ^§îöÝ•ÑhÄÏÏ›nºÉì)((   €ôôt åß+¥RéLÛÑ5³Ùì]ãª+ïB!„Bã3ÞÆBê V¾=]Çî"l‘£»]_ö¹@z¿˜w¡¸ÊØírº"66–²²2çš+%%%Øl6ÂÃÃÛM_ZZê]QYY‰ÉÔ²ý¶ÍfãÛo¿Åh4v˜Î—íiOLL õõõÎ)Av»³ÙìuÛËo2™0 2„Y³fQ[[Û¦_Ýí»kÛNž<É AƒÜ‚'‰‰‰”––b0œç ¨®®¦©©É9º¥³kŽ>–––RSS´LU²Ûí¾gÏžuNá(//çäÉ“ÎçUUUκ…B!„â?Œˆñ› T^„µŽé ŠI``hTç‰; ÐøcÒ$±)¿ ŽÖ£Ô†xÑÈž-è«Óé¸ì²Ëعs'V«•   æÍ›÷ÿìýy|TõÝÿÿ?f&“LöLÈFHÈa—]ö]¥€Šu£âU•j­µWm­Z½jõkoõú¸Ý®Z× .µE«u)uCDA"‚‚Š„ìda’I2Ë™ß!c²“äy¿qn9sÎy¿Ïû,3̼Î{é°öƒÍfcîܹ¬[·³ÙL\\AAM·\CC»ví"%%…¸¸¸· dy:bµZY°`›6mbÛ¶mX­VFŽIRRR‡eLHH ""¢Óôááá|òÉ'ÔÕ5’5aÂBBBº}Ž:ÓòüíÛ·Q£ZõBBBHJJâÛo¿õ׊),,dûöí„„„0þüVûél@xx83gÎdíÚµX­Vl6³fÍ",,¬ÓkPPP@cc#àСC”••‘™™ @QQû÷ï';;ûD.™ˆˆˆˆˆÈ+°ãçv/?Só-—™[,k;5¯o~ݧæÂSN½`@XXñññÇu+"""""""½K˜ !%%¥¯‹!"""""""§)uÖ+"""""""ÒKˆé% ĈˆˆˆˆˆˆˆôbDDDDDDDDz‰1""""""""½D‘^¢@ŒˆˆˆˆˆˆˆH/Q FDDDDDDD¤—(#"""""""ÒKˆé% ĈˆˆˆˆˆˆˆôbDDDDDDDDz‰1""""""""½D‘^¢@ŒˆˆˆˆˆˆˆH/ êë|y½^ ÃÀl6c±XŽ[Þ›Ú–AD¤§9N^zé%>üðCŠŠŠ #++‹k¯½–‰'2gÎÂÂÂxçwúº¨"""""½N˜;zô(¾o>&¬¡úðŒôDEEqôèQÌ&f³¹×‚1Íû2|>¢¢¢zeŸ"rv3 ƒßþö·|úé§ØívFMII Û·oçꫯîë≈ˆˆˆô9b¨²²׿n§uýÃi8ZGY¿É|3åw ˜JLttŸ”«º¦†ÊÊJbccûdÿ"röøúë¯ùôÓO?~":Ù¦#1ÑÑ8Ž:p¹\Ÿpz‘î*//š/«Õ @hhh«íÜn7<òëׯÇãñðÃþn¸€êêjžyæ¶lÙByy9v»yóæñ³ŸýÌÿ6gÎæÎKÿþýyóÍ7éß¿?O?ý4õõõ<õÔS|üñÇÔÖÖ2fÌ~ó›ßпÿ^< """""Sg½âñx¨Û·½ÝuQ‘‘¦=âô±ïˆg]}»ëuõqúØääËg ¢¡¡áä3é†áÇc³Ùؽ{7W\qO<ñß~ûíqÛ=z” 60`Àªªªxæ™gØ´i!!!lܸ‘ÔÔTæÎ‹ÏçãÅ_äùçŸo•Ç;ï¼Ã3Ï\õuí¯3wÝYnéáÃLjjj/œ‘Î)@>Ÿ¯ÝåõU%]¦}áñG8Z^Éõ×ÞrÜ:·ÛMþž71y.$Ç´“ºkŽÚZìöSï#æ¾ûîcýúõX,âãã™1cË–-ó7¸á†8ï¼óøÑ~ÀÍ7ßÌE]Ä‚ Úͳíú¶éEäÌ2aÂ^xáòòòX½z5ëׯgíÚµ˜L&þøÇ?Я_?Ÿ1#G65ÝjjjZí'$$Ä„(((`ëÖ­Lž<¹Õ¶-óéK Äô‚æÎ*;ó«{þÄëO=ÈÝsܺGÿ¼œëõK"O¡³ß  À]ê‹/¾˜o¼—ËÅž={x衇0 ƒŸÿüçL:•Aƒtþ'šþù矧¨¨ˆ»ï¾û¤÷)"e2™˜T˪OJ)«nä®+†b i7pË­7RâðQæ€Gß) ÂábÖðXæ×Ë¥nbµZ±ÙlØl6&L˜À%—\BNNŽýO~ò“SÊÿTÓ‹Hßq»ÝìÛ·aÆù—y< ©LwìÚµ‹††¦NÊ„ ðz½­òéHFFf³™üü|bcc‰ì¢.‘¾ @Løt_ W?ò^ÇÅlâ®+†u蘼½Õäí©æ¥œ"îº4‹Îëû>ÊËËIOO÷¿n¯)Rnn.¯¼ò ••• :”[n¹…”””vók›ÞçóñòË/³fͪ««1b¿üå/IJJâ•W^áÅ_ ''‡E‹qË-·àñxxî¹çøè£p¹\L›6›nº©Õô×_wÞy‡ªª*†Î/ùKâââX±b[¶l¡¢¢‚øøx®¾újÎ?ÿü8s"ß?yyyÜ~ûíÄÅÅ1pà@œN'{öìàòË/ïV ¼ùæ›x<vîÜ t]³/>>žK.¹„7Þxƒë¯¿ž .¸€òòrêêêøÓŸþt G%""""8 ÄôW6á5|„…X¸øÜÄJ{Áèx–7P\ÕÀ‹9E}ˆùä“O7n^¯—?þ˜M›6ñÄOt¸}QQ{öìá‘G!..Žçž{ŽÛn»¿ÿýïþ>":ÓÜ×Ä=÷܃ÍfcùòåÜ~ûíüíocÉ’%8Îãš&=þøãÔÔÔðÄOàñxx衇X±b·ÜÒÔÏ+¯¼Âºuë¸ë®»ˆe×®]ÄÄÄÄ€¸÷Þ{ á£>⡇bèСêèS¤RSSùÑ~Ä'Ÿ|B~~>f³™#Fð£ýˆyóæu+qãÆqÝu×±jÕ*V¯^ͬY³HIIa÷îÝ]¦ýÍo~CBBï½÷+W®$%%…áÇãóùºÕLTDDDD¤§)ÓŠª¸jz2ÿsY{+ ö2GÇ뺼MSrrþû²8ö5д6¿ug­[h(fK™q&²úþ‡ÇÁƒ[=Ìf3o¿ý¶¿˜¶¼^/—]v™¿CÎ;ÿú¯ÿbÆ \pÁîËívóꫯòÿ÷dddpçw²téR6oÞÌÌ™3Kãt:y÷Ýwy饗°Ûí\wÝuÜ{ï½ÜrË-x½^^zé%î¿ÿ~ÿ·sçÎõ§¿øâ‹ýóW]u«W¯æë¯¿V F¤ÒÒÒøõ¯Ýé6Í~7›8q"[¶liµì¦›n⦛nêvÍ‚‚‚¸îºë¸îºëºW`‘^¦@L/ˆNÑêµa4®ÖÔAedˆ‰’*'~P…·ƒXÌeã#¸jR4ç$›ÈÛ[ÏÝïîà÷OÎöo³'7ßö[âøëЇ‰ŠŽ üÁ—]v™?èât:yï½÷xòÉ'=z4S§N=nûÔÔÔVM—¬V+£FâàÁƒ]¸¯×ë˜Øl6† Æ¡C‡ÚMSXXˆaüêW¿ò?÷x<8NJJJ¨¯¯o•gK555|øá‡|ñÅÔÖÖRTTDccc—eéŠ1½ £a­[’ÌM³¢p{Úßvlº­Ë<ªª²`á\RÓPUu´Ç1-………q饗’““ÃÎ;Û Ä´ÇjµbµZ»ÜÎåra^¯·UÿÁÁÁþá²Û à©§ž"*êøsP[[ ´]øå/ÉŒ3¸æškHHHàÖ[oÅ0:®­$""""""Ò] Äô2×G…Ã@pÙ¿¼_„…_Íë8pÒŸ¯¿þšÉ“'w™oó³Ÿþ9cÇŽÀ0 òóó[ gÛr4•ÄÄDÂÂÂÈÍÍeþüùÇåÙ¿#F´®­´gÏjjjøéOê_öÍ7ßP^^ÞeYEDDDDDDºbîz ”­{kwûF¾-­'8ÈÌ”l»Ýæ}õ ûC!Ù¿oúË5þm³DÝÔÉí¬ÿß–¯íº‰O y½^Ün7n·‡ÃÁÇÌÎ;Ûí¯ ¬¬Œ×_]»vQUUÅòåË1 ƒiÓ¦MIII»5TÂÂÂX°`<òùùùTUUñä“OÃøñã¦V>ÿüsJKKihh ((ˆ%K–°bÅ ¶mÛ†×를¼Ü?rKTTÓ§Oç±ÇãСC8Nrss©¯¯Çn·SWWÇ[o½ÅÑ£GÙ°aÐÜ9UªÓ‹<†³Ñ @zB(ýc¿1èDš&…›—É{;qy \½ÛlfÕªU¬Zµ h jdeeqï½÷¶ê¦¥Áƒ3dÈþú׿R\\ÌÈ‘#yøá‡ýM.»ì2yä ¸÷Þ{Kÿ‹_ü‚+VpÏ=÷àñx?~<÷ß¿¿ÿ—óÎ;¼¼Ð¶ÚœhãÖùqþ¡­ÛJ ¢ÖåcWi aöئ§ý»Š¾Û~ìKX·a;YÇcNI‰ÃGRd +=‰ˆˆˆˆˆˆÈÉR ¦5ˆl312ÙÌÈäÎS^åæÛâj"[®1óÐù_E´?º³ˆˆˆˆˆˆˆôbú@LxS„äýÏ*˜:Ä΄AÑÝ®¹²·ÄÉ[y…(©ÁaU‘3ˆ†¯î3‡ÇðõáZ®~ä³Jûÿ½¼‡·?-`öðØ€—MDDDDDDDzŽjÄô%Ó“©p¸ù÷–RŠ«O8}|t0³‡÷ã®Ë²z t"""""""ÒSˆéf“‰_.Lç— ÓO8í‹¿ø‰ˆˆˆˆˆˆH¯P ¦—ù|>>ÿâKG'”.2*’Q#G`2©O9½½÷Þ{„……1sæÌãÖ½øâ‹ 2„ &ôx9|>999äççÊÂ… éׯ_@ò~ùå—5j#FŒH~ß7§Ëùñz½<ñÄ\{íµDGGŸt>ݹoOõ˜yÎN—ó/"""íS ¦—}þÅ—üû·N2µ‰sFéK•ˆœ¹233IHHèÖ¶[¶l¡ººšüà'µ¯/¿ü’ÂÂB®¾újL&6›í¤ò9]œêù“×ö¾=Õkq&_˾(û™|¾DDDÚ£Îzå´äõzyþùçûº,_¾ü¤Ö‰Èñ¦L™ÂÀ{e_ÕÕÕ$$$NXXf³þË““Ó›÷­ˆˆˆ|ÿ©FL/5r`¢¬´ü„Ò%&Å3rÄðž)ÔYhåÊ•þyÃ0ÈÊÊbÊ”)˜ÍfêëëyõÕW¹üòË ëV~'“FälÔ¶ÉÄÈÍÍ¥²²’ððpÌÔ©SÙ¶m[·n`ß¾}Œ9’Ù³g·ÊËçó±mÛ6vïÞM}}=ýû÷göìÙDEE±nÝ:¾øâ òóó‰eéÒ¥­Òw´o€gžy†ùó瓚š @YY¯½ö7ß|³?ý·ß~˶ɢi6 IDATmÛp:$&&2gÎbbb:Í{õêÕX­VÎ;ï<>Û¶m£¸¸˜ /¼ð„χ×ë%77—½{÷âñxÈÊÊbÆŒX­VÿùÎÊÊâÀTTTÃܹs)..æ‹/¾Àáp’’¼yó íò¼t÷ü“ŸŸOYYQQQÌž=›ääd¼^/›7oæÛo¿¥¶¶–ˆˆÎ=÷\†Úê>?~<»w隸¸˜… 2pàÀ.×0 ¶lÙB~~>>ŸôôôvïÃ5kÖàóùü5,š›03Æß¤ÎívóôÓOóãÿ˜Õ«WûïÛÎîÍŽŽ¹¥“MßÕ±·ÕY^½w:»¶Ýy_žÉ÷¾ˆˆHoQ ¦—™LÇšêë’ÈâÅ‹‰ŒŒ¤¶¶–7ß|»ÝÎðáñÙlÌœ9󄾘HšÜÜ\† æÿÁ&r¶jlläwÞaÆŒdggS[[‹Çã`üøñ¸ÝîN›#äååQPPÀ¢E‹ bãÆ¼ñÆüøÇ?fîܹS__ÏùçŸBûšÊÊʸüòˉˆˆ 77—×_k¯½¯×ÛaÞƒæ£>j•×þýû9çœsNê|lذ††–,Y‚a¬]»–M›6ù744››Ë’%KˆŒŒ$''‡—_~™Ñ£G³hÑ"Þyç6oÞ̼yóº}^ºÚ®¾¾žÝ»wså•WMnn.ï¾û.Ë–-Ãb±í¿n{÷îeíÚµ$&&b·Ûýy¬^½š9sæ0mÚ4ÿçeWÇ»yóf:ÄE]DPPyyyí^¿ÌÌÌVס°°Ð-š1‡&::ú¸¾e:º]ó©¦ïêØ[ê*¯ÎÞ;ç¤ß—ݧû½/""Ò›ˆée ìÙ³›††¶º+6[ÙÙñÙBž÷÷YDD)))x½^ )XÖÑSÔŽœHš²²2²²4ô¸Hmm-^¯—ôôtBBB éþg—×ëeûöí\vÙeþx/¸àžþy¾ýö[ Ôcû†¦šcÇŽõ×08ï¼óøÛßþÆÞ½{IHHè0ïôôtÜn7%%%$%%át:)//'##‡ÃqBer¹\|ùå—,[¶Ì_oòäɼûî»þ£6› &˜˜À¸qãØ³g'Nô§>|¸¿öPwÏKWÛ…††2~üx’’’˜0a_|ñÕÕÕôë×sÎ9Ç¿í„ øòË/)--mˆ1b£F}÷Ô¢«ãõz½ìÚµ‹Ë/¿œ¸¸8æÍ›G~~þqåOKK£±±‘ŠŠ âââ8pàS§Nå“O>áÈ‘#ôë׃’‘‘Ñé58‘c>•ô‘‘‘]^ëîæÓé{Çn·Ÿô{£³ûât¿÷EDDz“1½¬ºº²G‚0Ðä©®ª$©ÿÉ¿®®Ž>úˆªª*¼^/C† aòäɼð dddP\\ŒÏçcÚ´iþ*ý­k©¤¤„Í›7ãr¹ˆŽŽÆívû×½ôÒK 4ˆüü|&MšDvv6………lÙ²…ÆÆFìv;³gÏfãÆ¤¦¦2lØ0>ÿüsœN'“&Mjµ¯ÆÆFŠ‹‹q8:tˆ¢¢¢V£a,_¾œo¼hªÂýÁPQQAPPÓ§O÷¹m©ešòòr6oÞL]]6›3fÏgŸ}FII ÿþ÷¿IOOgþüùíGXXGŽaãÆÔ××ê¯ÎÝÑ59ÓÄÆÆ’’’ÂÊ•+ÉÈÈ`Ĉí~6´§¦¦Ã0Zu jµZIJJ¢ªªªG÷ `·Û‰õ¿¶X,$''SYYÉСC;Ì;((ˆŒŒ HJJâÛo¿eàÀŸp™ª««ñù|¼úê«þõ ÃÀårµÚ®åh{Í?¼[~¾ÆÆÆú_w· ÝÙ®e-¨¨(¬V«?õõõäççSTTDcc#555ÇÕ¼iû9ÛÕñVWWcñññí{KÁÁÁ 0€C‡GAA_|1åååø1í9:ÓÙ1ŸJúî^ëîäÕÕ{'++ë¤ßݧû½/""Ò›ˆée11±”••ôP1öØv×ù|¾SÎ?44”3fEcc#¯¿þ:$&&ÒÐÐÀðáÙ9s&¥¥¥¼ûî»\}õÕwº®™Ëåâý÷ßgÑ¢Eôë×C‡qðàAÿz‡ÃATTW_}µ¿—õë׳xñb¢¢¢Ø±c[¶laÈ!|ñÅþ@̾}ûÚý"íñxÈÉÉ!22ÇC}}=ð§kkìØ±ôë×ÂÂBÞÿ}®ºêªÛå»\.Þ{ï=-ZDll,`Íš5\uÕUŒ3†0eÊ:<Ž™3g²zõj~ðƒGCC!!!ø|¾¯È™Æd2ñÃþÂÂB¾úê+ÞyçRRR¸ð »Lëõzñù|†Ñê§Åbiõº'öÝ‘æ}w•÷àÁƒÉËËcòäÉìß¿ŸÁƒŸT™š?C¯ºêª€ÕÝ2œÊùs»Ýüë_ÿbРALš4‰ÈÈH^{í5 Ãè4]WÇk>ŸŸÏ×a¦¥ÌÌL8@FF&“‰˜˜233ÙµkC‡¥¶¶ö¸þ]úJ ¯uWïS¹¶gò½/""Ò›ˆé¡1ß=u²ÙB8眱½^†X»úS þ˜Íf<Û¶m£¶¶§ÓI]]Ðô%ª¹*xbb"QQQ”——3`À€N×5+))!&&ÆÿÄ*99¹U hÕ‘cII N§“7M_ì½^/©©©|üñÇ444øŸrµ¬êÞ,<<ÜßG ÀÞ½{Ù°aÙÙÙíþˆk.WJJ 111”——wø½´´”èèhÿÓò´´4¶oßNeee«'µGII þóÖüEÓd2ux DÎT)))¤¤¤0nÜ8^|ñE®@‡?Λûí(**ò?9÷ù|”••1räÈSÞ·Õj¥²²²ÕSù–íúúzŽ9Ò*¯ÒÒÒVMY:Ê;==µk×RYYÉáÇ™?þI¨¨(‚ƒƒÙ¿?Ƕ3÷ÎÊp2ÛµTVVF}}=Ó¦Mó/«¨¨ ¶¶¶Ót]oË{"%%¥ËcÌÌÌ$77—ýû÷û¯[FF~ø!ùùù¤¦¦v:ÒVW£®œHú@^ëî¾wNæ}ÙUÚ3áÞé ˳7˜º~:ÛãEðz­˜òòrÖ­[GJJ S§N%>>Þìh›·Ùlö4:[×Ì0Œã/­Êßæéfpp0III,\¸… ²xñb.½ôRÌf3YYY´zÚÖ•Aƒa2™p:]îÛãñtúåÜëõw,n·»Ý4‡Ûín÷)_g×@ätâñxhhhh5µý,hhh`÷îÝþŽ9>ŒÕjõwzÁáÇq8ÇÝçÁÁÁŒ1‚õë×SZZŠÓé$''‡ÐÐPÒÒÒº,_WûNNNæË/¿ÄápPSSúuëüýHAS-½Ï>ûŒÃ‡ûƒ©>Ÿ¬¬¬.ó¶X,ddd°aà àÿ¼8Ñóa6›?~<›6mâàÁƒ†Amm-eee'yÕº.Énמ°°0\.Ÿþ9 ìÝ»À?bOGº:Þàà`† ƺuë(--¥®®ÎänOdd$QQQlݺÕˆ &99™7vÚ?Lg÷fwœhú@^ë®Þ;§ò¾<“ï}‘Þ¤1½ÀYQˆ-&®OËp°ð‰I§ÖwLUU!!!ÄÇÇãr¹())ñA °gϲ³³©¬¬¤®®Î_›££u†a°k×.† FRR}ôåååÄÇÇSQQÑiÛ÷„„Ž=JAAéééø|><V«•!C†øû\Y°`@«}µ× `II !!!þ2-5?)LHH ¼¼§Óé?6‹Å‚Çã!(è»·RRR6lð§)..Æ0 ͛͆Ãá !!¡ÃãHHH`Æ TUUa·ÛñxøàV®\Itt4ÙÙÙTWWûÓ'$$˜˜ÈÇLMM ÉÉÉþ`pWyCS·ß~› .¸à”ÎÇĉ±X,äääàp8 cüøñ­úÿ8Ý)û‰l×»ÝδiÓØ²e ¹¹¹¤¥¥u»ó®ŽwöìÙäääðÖ[oÂðáÃ; ðdff²uëÖV5³²²8xð`§½®îÍ®œLú@^ëÎÞ;§ò¾<“ï}‘ÞÔu#êÀçgêb¾å2s‹em§æõͯ›ç-mæƒÚü¬¨¨Øˆ>SZª­­eH;ô6ýÂé—NÃÑ:êuŸÿs® èþNDuM5ŸíøŒaÃGtYe¼3n·›œœJKK±ÙlX,FEff&O?ý4ƒ¦¬¬Œ¦OŸîo†ÓÑ:§ÓÉk¯½ÆÂ… ‰‹‹ãàÁƒäææb6›IHH °°«¯¾hÝn³ŠŠ 6mÚäÀŒ9’ÌÌL^}õU"##ýC]¶Ý×Ê•+1™LþÚ9aaaL™2Åß©åþžyæ’““9zô(6›iÓ¦ù-//C‡ñƒü€—^zÉŸ¦°°ÜÜ\¼^/LŸ>Ý?üjii)7n$$$„… RYYÙîqìß¿ŸO?ý«ÕŠÍfcÖ¬YX­Ö¯|§ººº[µ"DúJuu5+W®äÆoì´6 È÷î}i+88x2ༀ§Í_`´™÷µ˜§Åë–-ÖÓb™¯emç;° ‚1Ò2Së·× Üff@?¨žõG’æÿŒššœõNh±ïÆÚ¼îŽk~´Çg2ã3[1º8Ý^‡ˆ¨H"ÂÃùr÷n† FxxøI_WÚ ”tg]OùàƒÈÊÊ:¡¡GåûC9ÝmÛ¶ÂÂB/^Ü×EéUº÷ED¤­³1£¦Iäóq¨ØI™Ó‡Ã ‰¡à©3‘X_Á7ßìãÈ‘Š^/RRÿæá?MŽòó}ãr¹(**bΜ9}]‘víÝ»÷„:ù¾Ð½/""¢Îz¦±±÷¾­TÔû(t‚Ç ^°˜|4ìè“ L³ÂÂÃØí±gMà½{÷’––Ö­¾ DDz[uu5åååjR(gÝû"""MÔ4)@ÊËËÙ÷ÛT9‚ÃýBš¦„pËJý¼;ÚMWàK¼Î£'¹W3‡Ógµê(¶-kP0¡aaŒ7î$÷!ræQÓ$‘3ƒš&ÉI Á;`Éž”TC´µijtAcþ×}»éLœüEð%¥uÎb'°mY,bbbüЊˆˆˆˆˆˆHßR &@¢¢¢ð]p+om%3Î…«L­tãg±@X„•¯†.`Ô¨Q„††öÌŽDDDDDDD$ ˆ  3gòVõS Þý, ν˜Í&<ÖЀ·ÿ:’È®ä š±XA‘3ˆ1vÑÅóeV»«ª0™Lößr²Â˜žNdddÀ󑞣@L1bD_ADDDDDDDNC¾ZDDDDDDD¤—(#"""""""ÒKÔ4IDDz…Ï×CCɉˆˆˆt“Éè¡TDNœ1""ÒcÚ_Œ‘¾b2™Z}QPFúŠ1""Ò#Z~Ññù|þ©í:‘žÔp1™Lþ š¾(#}A ¨Ž0^¯·Ûa†Ñ‡%‘³‰ÙlÆl6cµZ±X,­2Íß[‘Þ¤@ŒˆˆLË/Í“ÇãÁåra6› Åjµb6›õ…GDDDzœÏçÃ0 Ün7õõõ466LPPÐq}7‘Þ¢@ŒˆˆDÛ Œa466MPþË‘Þe2™°X,X,l6‡ÃÇã!$$³ÙìßNÁé-¾ZDDNYË Œax½^œN'!!!ØívaDDDä´„Ýn'$$§Ó‰×ëÅ0 õc'½JߌEDä”´„ihh ""›ÍÖÇ¥9^XXf³™ÚÚZÿ÷•æ¦Óª#=M˜óz½x< ÃÀl6„Åb9ëÊ "gŸæ@ŒËå"44TA9­Ùl6¼^/„„„´QI¤')@‡Ã0ˆŒŒÄjµâv»q8˜Íf"##Ïš2ˆÈÙ£¹6Ls•^Ç@xxx_KDDD¤[ÂÃÃillÄãñ`6›ý³U+Fz’1räÈ"##韔„Éü]×;ñqq—”PUU…ÝnïÑ2TVVÑnŠŠ‹©¬¬$66¶GË "g¶m¨½^/.—‹˜˜˜>*‘ˆˆˆÈ‰‹ŒŒ¤ºº‹ÅÒª_;c¤§¨³Þp:‘mߨ& ñ˜L&êëë{¬ õõõ˜Íæ˘˜€¹‡Ë "g§æÚ0^¯³ÙŒÕjíë"‰ˆˆˆt›ÕjÅl6ãõzýM­Ez’jÄ@]]I MO‡}¾ÖcøÚcbø¶ €¸¸¸)CEE™–!6ÖNiY9¡¡¡=R9{†ÛíV“$9#………QWW§þ5¥W(†ab Ágø0LFS5#“ ŽES}†ÐP#†ë±2$&Äãóù:-ƒÍfStWD¢åHIÍ“×ë%88¸K&"""r₃ƒ9zôh«ï6AIzŠ1p,Øa^ ŸáÓú †Ñ46}OGV»S‘@jùe¥¹s;‘3MsG½m1"=A˜@0™pÔ%&ÚŽ×ëÁd˜›+£àó5?œõuÔ:Žöh1""£‰Œˆì° GÖèÃDDzDó}ƈˆˆÈ™¨ù!vo<@Q &BCCÉÿ:Ÿ &b±Xðù Z&âõz)/«à£ 9=6rRee%³gÍ ,4¬Ã2|ýu>™Y§´Ÿûî»õë×`±XˆgÆŒ,[¶LMDÎR-›)Š»ï¾›7òúë¯ןÖòåË9pà÷Ýwß)í£§]sÍ5\vÙe,^¼¸¯‹""""'(PßiDº¢@LDFFRçl`ïÞ=¤¥§jû®3܆†zÀGff&1v;G:ˆèþËËË‰ŠŒ 66–úú:0™[•¡¾¡žßî§±ÑEDDÄ)ïïâ‹/æÆoÄår±gÏzè! Ãàç?ÿù)ç-"g®@|i©««ãá‡æþûï?¥|žzê) OûÀˆˆˆœ>€‘Þ¢@L˜L&ÆÏÇLqq1C‡dMM‚êêëIŒOÄf #öXm˜òòrâââüÕøO´*Ë6‹þ €Çí¡´¬˜°ÐL¦¦¾bòó÷R_ßÈŒ™3ÒlÀjµb³Ù°ÙlL˜0K.¹„œœœSÎWDäÒK/eÍš5lÚ´‰iÓ¦õuqDDD¤_¹ÈÙÓÀÎC. ޏ©veø0› &ÌBz?+£Sƒ™™mcD²jâË™M½*HPP3gÎÄð™èŸœBÿäLf3~¸òŠ2ŽÖTk·IQQ.—‹ÚÚZ\.W·÷Ó2Mqqq« Œãh ¥e¥|ðaÉšÊ`6›Ádaæ¬Y=ÖÖ±¼¼œôôtÿkŸÏÇ?ÿùO®»î:.¹äî¾ûnJJJøûßÿÎ7Þˆ×ÛÔ©p}}=W]ukÖ¬Àãñ°|ùr–.]Êå—_ΟÿügêëëýyòÉ'Ü|óÍ,Z´ˆk®¹†gŸ}¶GŽIDúFRR7ß|3<ð nçv»ùË_þÂ…^ÈùçŸÏ}÷݇Óéš>gž}öYÖ¬YäI“xàøýïÏï~÷;z—ËÅ„ ø¿ÿû?ÿ2§ÓÉäÉ“9|ø0†aðüóÏs饗2gÎ~ýë_STTäßöšk®áý÷ßç–[naÖ¬YäååWÆÚÚZ®¼òJV¬XˆS#""rÚØ´¯›þQÁ²çËy~“ƒí©¬;Õ Œ¯iò5OƱAQ|TÖzØ~ ç7eÙóeÜô 6íëø{‚ÈéN˜²X,ddd´Zvþùç³}Çç­‚1qýú1jÔ(RRRHKK£¡¡ººº.󯫫£¡¡´´4RRR9r¤¿…æ ÌŽÏ>çüóÏo•.=== #™|òÉ'äåå±yófxà>øà–.]ê_ÿ /““Ã=÷ÜÃSO=Epp0·ß~;‡¥K—âõzyã7€¦L™™™ÌŸ?€Çœââbžxâ žzê)Š‹‹ý?b÷Üs ,àå—_æü#Ó§OØq‰ÈéáŠ+®Àn·³|ùò·y衇8|ø0ÿûßyñÅ9|ø0=öÐ$¹þúë™?>yyyÜyçÌœ9“O>ùÄ_åøÓO?à£>òç¹}ûvRRR0`Ë—/çÃ?äÁdåÊ•sÓM7áv»ýÛÿîw¿cÖ¬Y¬X±‚Ñ£G·*Ÿ×ëå®»î";;›Ÿþô§:5"""}îþÕÕÜúʶl PŽÍÀç;Ö×¥·é¯qlj± Ÿí¸õå î_] 2ˆô.bz˜ÉdbÁ‚þ`Lm­‹%È1›Í LM¥¦¦†êêjjkkÛª««©©©a`jj«´Kuµµþ Ì‚ z|Ô’ƒr÷Ýwó‡?üµk×ÒÐÐÀÛo¿ 4=¥~õÕWùõ¯MFFýû÷çÎ;ïÄét²yóf‚‚‚øÍo~Ã?þñòòòxÿý÷¹õÖ[¦§Ñï¾û.¿øÅ/°ÛíÄÇÇsÝu×±iÓ&Ž9‚ÇãaÒ¤IDFF’žžÎ!CzôXE¤÷™Ífî¾ûn^yåöíÛwÜúºº:V­ZÅí·ßNll, ÜtÓM­‚*mM:‡ÃáÏoóæÍüâ¿ ººšýû÷——ÇôéÓq¹\¬\¹’ßýîw 4ˆpï½÷RWWתæâÅ‹¹ì²ËÈÎÎÆf³ù—û|>|ðAœN'øÃtVDDDú–£Áà¦TðÆö® wŸïØ¿cÃË…£ÃyàŠxÞº%…-¿OcËïÓxë–¸"ž G‡ã3Žiðñƶ:núG9Ž#€eéyê#¦4cV¯^ÍœÙ1>Ã0ücÕ>ƒô´T¬ÖÎÛ:ºÜ®vÓ64Ö³}Ç..\Ø+CÇ^vÙeþŽyN'ï½÷O>ù$£G&%%¯×Kvv¶{›ÍưaÃ8tè#FŒ`Μ9Ü}÷ÝÜyçþZ=………†Á¯~õ+ÿqx<sƒ2fÌ®¿þz&OžÌÂ… ;vl¯ˆô¾ììl–,YÂ}÷ÝÇsÏ=×jÝ0 ƒë¯¿¾ÕgEg5 #""7nŸ|ò ƒfÓ¦Müå/!??Ÿ?þ˜ÌÌLòòò¸ãŽ;8|ø0‡¡C‡úÓ‡††2jÔ( üËÎ9çœv÷õæ›o²k×.Ö¬Y£ÑäDDä{ãŽW+X škÂøŽ5Cºpt$?›CRôñÝ)$E[HŠcîÐ0~6+†§?ªæí|&3Û4pÇ¿Žð×k; ŠHOR ¦—˜L&¦NJiiqq àóa2™ñù ¼^/n»Ë@ŒÇãÆëñ—¶¸¤„iÓ¦õJ¦­°°0.½ôRrrrعs' FS¹‚‚¾»½‚ƒƒ[ý iÆ;4ô»ÑÂÃæÑN¢¢¢ŽÛ—ÙlæÁdçάY³†{1cÆðÇ?þ±§ODúÐ7ÞÈ•W^éoÊØ,22€•+WÝíüfÍšEnn.Ó§OÇb±0pà@fϞͫ¯¾ÊÂ… )--eìØ±|óÍ7þϱ–Í:Û~ŽudâĉðÊ+¯póÍ7w»|"""§«ûWW÷`ÆË â¸rbd·R&E[¸gq?†%óÐê |XØ~°ûß­â®…ö–Q¤ç¨iR/ åÈ‘JÜn^¯·)°âõâv»¨®¬¤¸¸°Ó©º²ý´U•Õ­}!&&†ððp’““øüóÏýë à ??ßßΡC‡xóÍ7¹ñÆyì±Ç¨­­ 11‘°°0rss;Ý×èÑ£ùíoË£>ÊæÍ›©¨¨è¡£‘¾d³ÙøŸÿùüñVïóþýûΆ :Mß²?€™3g²cÇrrr˜1cÓ§Oç믿öwìDjj*;vìð§5 ƒÝ»w3hР.ËœœÌÿþïÿò·¿ýM#ʉˆÈoÓ¾†žiŽäóqbA˜–®œÉ âÀðâóùxc{›öÖwPä4 @L/ !ÆËŽ;¨®®Ä鬣ºº’;vðáú¶ämëtZ÷ÑÇí¦Ž±ÒkÇÑrãv»q8|üñÇìܹ“™3gÆ‚ xä‘GÈÏϧªªŠ'Ÿ|’˜˜Æa<øàƒ,Y²„+¯¼’AƒñôÓOM#O-Y²„+V°mÛ6¼^/åååìÙ³hê¬wÍš5TTTÐØØÈÎ;±ÙlíÖž‘ï‡)S¦0uêÔVµb‚‚‚¸æškxì±ÇÈËËÃëõRZZÊîÝ»ýÛ$&&²cÇŠ‹‹ý#¯õïߟäädV¬XáÄDDD0vìXyäçßaaa,^¼˜û￟ݻwSYYÉÃ?Lll,“'OîV¹'OžÌM7ÝÄþð³L‘3Ñ?rk›¡cîz¹pLÄIaš]91’ ÇDÀ±Ž|ÿ貊ŽP¦õ IDATô5MêeYYY¬[·ŽQ£FájtQW[KYù.½ôÒn¥o/íœ9í÷SÐSV­ZŪU«ˆŠŠ"++‹{ï½×?„õ/~ñ V¬XÁ=÷܃ÇãaüøñÜÿý˜L&þõ¯ÑÐÐÀå—_À-·Ü 7ÜÀܹs;v,K—.%88˜'žx‚²²2ìv;K–,!;;›ÚÚZrrrX±bN§“ÔÔTî¹çõÁ ò=wÛm·WSî'?ù !!!<üðÔ””˵×^ËðáÃX´h›6mbÉ’%Œ?ž?ÿùÏ@S­˜gŸ}–1cÆøóš3g[¶laÊ”)þewÜq>ú¨Ä·I“&ñØcPÐeË–ñÅ_ðÛßþ–矾U‡¾"""g‚/‹\o’DSŸ0>ÃËÏfÇžrŽ?›Ë[;j0™Mì8ØÀ‡9 ÷R‹œŒ@w*ÒüL]Ì·\fn±¬íÔ¼¾ùuó¼¥Í|P›¿‘[š‡0 ´ÒÒR23Ò(..¤¾ÁCbbâ oÓWù‹|TWW“––Ö×Åø^kþ mîKÅãñàp8HIIéã’‰ˆˆH <õÑQžßä\†ÍÃS.Á=—$$Û{W•ñÖÎZLæ –Mææ9ÝïC®¥ÂÂB"## Âb±øûŠë‹¾8Ï&ÁÁÁ“àƒøHKÀòŒ´4õ;ƒÑ#e 4bDDDDDD¤|W#&à9«>5M’Óž1""""""rœ˜°@þ\ôµš-wx–s¹ÃãÏ>&T?qåô§»TDDDDDDŽ“ÞÏÚcyï. ܰØ-óJëÁ2‹Š1}ÀívƒÉ„ÉdÂl67½î…´""""""Ý5:58€¹™ZÍnøª&`9oøªÆŸý9-³HÏP ¦—ÕÕÕ…ÍŠ-4Œ´ôADEEQWW×£iEDDDDDNÄÌl[€s4{¨læÍ­%”Ôœzó¤’on-Ád2ƒÉÄÌl&“©ë„"}H˜^äñx¨­­e`jªÿÃÁd2105•ššª««©­­mwª®®¦¦¦¦Ý´µµµx²éçj¹ÃÃîÃõlø²’U[ 1™­˜ƒ‚1Y‚“ÁWÄc6›UFÎ ÄXÛæ^¯—òòr¢"#üOG]®F*ÊË)8p—ËCXx—^zi·òÿôÓOÉÍÍ#(ÈBFz:qñ>bbb‰µ7Uå+//o· R^^ÎæÍ›©««Ãf³1cÆ ð祗^bРAäçç3iÒ$²³³)..fóæÍ¸Ýnìv;eeeüøÇ?>.ßζ{öÙgÉÌ̤´´ŸÏÇŒ3HIIé²<Ï>û,”••0qâD¾ýö[ÊÊÊ böìÙ$$$PXXÈ–-[hllÄn·3{ölÂÂÂZ•±±±‘ââb‡¢¨¨ˆ &tyn¶mÛ†Ãá`öìÙx½^þýï3}út’’’ÚÝohh(¹¹¹`6›0`3fÌØ59ù|>rrrøæ›o°X,¤¦¦2wî\ ©)àÚµk)**Â0 æÍ›ÇÀ©««cÍš5TVVâõz1bÓ§Oà¹çžcÈ!ìÞ½›éÓ§3lØ0µfJ¦¦{}«ø0a˜Ì൰jk «¶Æç3Àç;–¦©_ÌLA6L– Ìf+‹ÇGsçÂ8,‹0rFQ &€V«• k0f“‰¸¸Dªköc‰öaêêj)--æÓíŸ1|ø¢££éׯ_·÷1aÂŽ9‚Ãá`ÇÎÏ;f€?ãóù(++oU†FWSð 22ò”ŽÏårñÞ{ï±hÑ"bcc9pàk֬᪫®Âb±àp8ˆŠŠâꫯÆl6ãr¹xÿý÷¹ð éׯ‡¢   Ý|;ÛÎãñ0vìXbbbØ·o999,]º´Ëòx<ÆOtt4_}õ|ðK—.%22’Ï?ÿœÍ›7sÉ%—P__ÏúõëY¼x1QQQìØ±ƒ-[¶ø¶,GNN‘‘‘x<êëë9pàÆ ë´,ãÆã?ÿù ¨¨ˆ¬¬,’’’:ÜïàÁƒ)--媫®Âd2iD,9+8p€ââb–-[Öî}?vìXÎ?ÿ|òóóùðÃY¶l¡¡¡Ì›7èèhx饗ÈÊÊ¢ÿþ=z”˜˜~ò“Ÿ`±Xp:¬Y³†+¯¼’èèh¶nÝÊÆ™?>7Þxc‡åòx<œ{î¹ØíöVûî,¿ýû÷3sæL’’’سg»wïfôèÑþZ‹{öìaòäÉ466RSSCÿþýq¹\¼ùæ›üð‡?$..Žýû÷óÖ[oqÝu×tÜñ´,ßþóÆŽ« ŒˆˆôŠ»Ä0c°äÖždí˜|˜0á3[0™“ ³aÆg²à3‚ÀçÅg€ÏŸÆdniÉd¶0&-œ«§D3cHf³Yµa䌣@L€TVVAzZZÓ‡ÃØ1cp¹1 ã» Ì¶ÏøÁtr§¿_¿~ôë×´´4Þ{ï=ÆŒ 4câââ< U"#£(*.¦²²ò”ú,(--%:ú» RZZÛ·o§²²Ò_ eèСþíKJJ°Ûíþ@Srr2ÁÁÇwHÜÕv&“‰˜˜²²²X¿~}·Êc2™üýæ 4ˆ-[¶øƒQYYYìØ±Ã¿§ÓÉÆ¦~wÚ«Eîï#`ïÞ½lذììì.Ë2wî\þùÏç¯ýÔÑ~cbb¨««cãÆ¤§§ûkÿˆ|ŸÙívjkkY¿~=YYYþZ'f³™¸¸8²³³Y³f¹Çã!//‡ÃA]]µµµþt#FŒðÏQWWçÿüp¹\ݪ-h6›±«qØrßÝÍ/33“uëÖáñxØ·o'NdÛ¶m9r„#GŽ™™éÏÏn·û333“­[·räÈ­˜–ÇMµˆV­ZÅÿŸ½ûޝ²¾ÿÿÿ¸Î99#d'@Ø ¶€²GØÈQÐ* (Uk[õcUÚÚeëAë×YíOTÕªˆhA"Û®€BA"#ìääÌküþˆçx²C8àë~ãÜrk¼¯÷urr8çyÞ£}ûöZÈ!„mTw;£ºÛÉ<å#ã‡/Žû8–ï§È¥£uÿC³ÀÀŒb*7FQÌå-at ŒònK±‘&:'ÚèßÉNzHúut`6›+0ˆó‰1aàv»1™L´iÓ*¿( f‹wiI0„™2ejƒC˜ŠE+L:5ÆX­6bãâ«­CÛ¶m8öÝ1Ün7‡£AçÓ4­Jâ÷ûƒƒbU~ñÓu½Úॲúî8Gà½^uèÞ½;¸\®:ëØÚl²¶óþìg?#++‹o¿ý–={ö0gÎùÏE\ÐbccY´hG%33“mÛ¶qíµ×VyÞ‡¾œ>}š72qâD)((ÀçóUÿæm6íÛ·göìÙÖ÷ÝwµvMªéÜ5•W™Åb¡sçΜ8q‚¬¬,† ‚ÓéäðáÃû®îuÐç󯣺×5EQHMMåàÁƒ :´Þ¯£B!D¸ômo¥oû†ÿÿcüÐõÈ0 t]G×õà²aÁíÿƒÁKh+˜Àv!Î'2¬t8Î`· `?Æ€^@ÅħÛv2jÔh<N§3,·²²2FÍŽ{°X"j­CBB|…o‹ÏVrr2§OŸ޹’®ëÁo‹«Û?''‡ÜÜ\òòò‚’t]çóÏ?ÇëõÖº_8ëS“6mÚPRRìe~¿¿B«“““ƒÍf#::ºÎºlÞ¼™)S¦àp88pà@­çõù|x½^ºvíʸqã(**ª×ã!ÄùÌëõâñxHKKcòäÉÕø·ŸŸÃá mÛ¶hšÆ©S§*tÛ •œœLqq1G~ü{KMMåæ›o®r««…IMå8JJJ‚ûöèуýû÷‹Åb¡G>|˜œœœ`‹·víÚ‘MNN'OžÄ0Œ:»®4ˆ:°nÝ:t]¯u_!„¢¥ RL&‹‹ÅBDDX­V¬Vkð~`»„0â|'-bÂ@×uìv†n +zyº¥(Hsuƒˆˆ®_¸°Ñê°pÁüòÔ¸–:Øíösz£n·Û™8q"[·nEÓ4¢¢¢˜:ujÓěܼys°kA %ÇãáË/¿¤cÇŽ$%%Õ¸_8ëS“ˆˆ¦M›ÆöíÛÙ»w/ôë×äää`m6k×®Åd2a6›‰ŒŒdÚ´iuÖeÿþýDFF’’’Brr2«W¯¦]»vÄÇÇW{ÞV­ZñÙgŸQVV†®ë <8x~!.Tìܹ§Ó‰¦i >»Ý^ë1Ý»w'++‹—^z ‡ÃA‡j b"""˜5k[¶la×®]X­V @ZZZƒê[[yƒ bË–-|õÕW\qŤ¤¤ðÁ0cÆ "##Q…¤¤¤à›G‡ÃÁ´iÓØ´iSð5dæÌ™õz=7nï¿ÿ>Ÿ|ò 'NlÐõ!„Í¥ºÖ¯ðck™ºöâ|îgo}ÊSêX]g YWùظX6WZ¶Tú——·«òö¹8}ú4)]:a6[0™Êû8*Šòc0¢k¨ªZã„pÑ4퇄¸æ:d}<8Þ@S+++cݺuÌ;7,û Q“¢¢"ºtéÒÜÕ¸ ^Cu]GÓÊ__JKKeL#!„B„E]ALc8qâÑÑÑX,–à4MuîŸ2«Õ:(4@­ôÓôJËFÈ2!÷Co„l'dQͺÊË5 [ˆ -bÂ@QŠ‹‹‰O@ÓTÝhŒR>Øàr•át–ÔQÒ¹‰ŠŽ!:*¦Æ:””7ù‹HYY6› ‹ÅÂÁƒIII9§ý„B!„> ?Ä…L‚˜0p8|ûí· 2³¹|¤ïÐWÓ4¾üò+Že}Oddd£ÔÁív“šÒ™¡C‡ÕX‡o¾ù–Ô®M;½é±cÇ‚c¢´mÛ–‘#GžÓ~B!„B!ÄùL‚˜0ˆŠŠÂíörèÐ7¤¤vÅaÿqV"·ÇMÖwGñûUfÍšÕhÉ®a|¶gO­uðz}DEE5ÊùkÒ·oß*S®žË~B!„B!ÄùL‚˜0P…AƒóiF§OŸ¡}»dZEEQætròT6.—‡ô1cµy]K¨ƒB!„B!j'AL˜˜ÍfÆŒËwß}Ç‘ï¾Çëõb³ÙèСƒSSÏz&ŸóµB!„B!„¨™1ad2™èÖ­ݺ5í8,-­B!„B!„¨ž4‘B!„B!„h"Ä!„B!„B4 b„B!„B!šˆ1B!„B!„MDëB6Í]!„B!Z4 b„B„MBBBsWA!„¢A\.WsWAüDH×$!„B!„Bˆ&"AŒB!„B!D‘ F!„B!„¢‰H#„B!„BÑDd°ÞDÓ44MC×u Ã@QL&‹“Ir3!„B!„â|&AL `eeeìÞ½›ŒŒ 233),,Êg éÛ·/cÆŒaèС´jÕ EQš¹ÆB!„B!„h bš™ßï'33“§Ÿ~š¯¿þ:Ø*&Ð"¦¸¸˜¬¬,>úè#úõëÇm·ÝFß¾}‰ˆˆhæš !„B!„âlI_—fäñxزe K–,aÿþýx½^TU †0º®£ª*‡}ûö±dɶlÙ‚ÇãiÆš !„B!„¢!$ˆi&‡­[·òàƒ’——‡®ëu£ë:yyy<ðÀlÚ´IÂ!„B!„â<#AL3„0?ü0¥¥¥ZÀÔÅ0 œN'Ë—/—0F!„B!„8ÏHÓÄÎ6„©n`Þ@³bÅ é¦$„B!„BœG$ˆiBgÂ(ŠB¯^½7n\aLii)K—.•0FqA¸ï¾ûxì±Çš»â1oÞ<^zé¥ó¶|!„B\¸$ˆi"gÛÆ0 >ÌîÝ»kÜ7Æ<üðÃ|òÉ'Æ!~Rž}öYî»ï¾æ®†h¡ÆG¯^½ÂRVuϵp–/„BˆŸ™¾º Ô'„Q¥ÊzMÓp¹\µ–覴téRTUeÒ¤I8ްÖ_!„8ßÜvÛmçuùBq>È<å#ã‡/Žû8–ï§È¥£×øËz00)i&%1‚¬Œéa§o{k8O"D““1¬>!ŒÕjeâĉ˜Íæ#Æ<úè£ÞMéÁdÒ¤ILš4‰)S¦0þ|ž{î9|>_½ËX¼x1o¼ñFðþm·ÝÆúõëkÜßï÷3iÒ$N:uNuBœ_.\ÈÊ•+¹ùæ›;v,×^{-Ÿþ9«V­â…^`Æ 6ŒeË–å¯ÿïÿý?f̘ÁäÉ“yðÁ+Ú .ä£>âöÛogìØ±ìÞ½»Î:üûßÿÖáúë¯çÀu–§ë:/¾ø"sæÌaüøñÜyçU^Ã^ýuæÎË„ *l¯ëvìØÁÂ… =z4³gÏæ©§žª×¶Êj:]u_¸p!/¼ð‹/fìØ±,X°€ðÆopÍ5×0vìX~ó›ßPXXxNÇL™2…={öïø€·Þz‹;3͛7ó /Ôûø‘#GÒ½{÷F«ŸâÂPTTÄ3Ï<Ãí·ßλï¾K¿~ýX²d ~¿Ÿ… rÓM71eÊvïÞÍ’%KX¾|9'OždÕªU¼öÚkœø€¿þõ¯¼ñÆL›6øøø:¯¡¤¤„{Ë/¿œuëÖñè£2a„:·UVÛùëª{QQÏ>û,wÝuï¾û.;wfáÂ…?~œGy„W^y…'NðôÓOWø]ží1u©íùq6×A§NX±bÿþ÷¿™9s&ùË_ÈÊʨñ¹VY}·šê{6¿;!„hnK×ñoæ³ï{o˜J /€a`:†¡•ÿÔ¸…¬Ã0Ø—åáÿÞÈcéúÂ:K¢%’®I¤¾!Ìõ×_ÏUW]ELL £GæË/¿¬²ott4_|1_|1iii|ùå—¼üòËx½_üBÀñãÇc·ÛÃ~mØívìv;ƒföìÙdddÔûøo¼1ìuB\xâââX´hýúõà†n`õêÕ?~œ®]»VÙ¿¬¬Œ5kÖðÁÀ­·ÞÊ’%K*|xž5kW^ye½ëñ‡?üðÿ÷lÛ¶>ú(XFåò|>¯¾ú*Ï?ÿ|0t¾ÿþû™1cŒ7Ž•+Wòä“OÒ»wo ¼õG}®!77¿ßÏèÑ£‰‰‰!&&&xÞÚ¶…Ò4­Æó×U÷‰'/}úô`Á‚lذ›nº)XçË/¿œwß}7xΆS—³y~ÔvÍsçÎ ./Z´ˆ÷Þ{ÌÌLºtéR¯ºœÍãV]} è×ïN!šS©Gçž· ÂÀ@y?¶‚™10šôú´³Ñ:º¼Ç@n©Æl/ŸróÁ祠˜@QX½·Œcy*Ëç&m—6âü!AL#8Û&)) ]×¹øâ‹«ì§( ½{÷æ–[n¡cÇŽDGGÓ£G€f cBåææ’’’¼?oÞ<~÷»ß¯çСCÜyçÁ¦Þ·Ýv3gÎdÚ´iÕ–§i/½ô›7oF×u†Za»ªª¬\¹’-[¶àóù5j·ÞzkplœÛn»yóæ±aÃ233ùóŸÿÌ AƒáÊ…ÍdúñMUûöíq85Ž•••…®ëÜtÓMÁÖ…ªªRVVVa¿þýûŸUB[*šL&ú÷ïl-Q]y'OžDUÕ ¹:.ºè"Ž;ÆÉ“'q¹\ÁPâl®!55•Áƒ3oÞ<ÒÓÓ™5kVð5²¶m•ëWÓùëª{èã=\.W0TIMM­ò{jÈ1u©ïó£¶k†òÖ*ëׯçóÏ?§´´”'NœUËÒ†ÒÓÓ+¬{þùçkì¶d6›k}Mõù|躎¦i>x[­V¬V+N§(S¤òØ`u]ƒÉdâ™gžaïÞ½¼ÿþûÜsÏ= <˜G}´Öm¡j;]u¯¯Ú~Oá<¦¾eÔvÍn·›n¸ &pË-·œœÌâÅ‹Ñ4­Þçmèã¨o}wBÑ\–®/jÄFãžiIÌ]¯#“cÍüyV"½Û[Y¾>3û¾÷°t]!¿Æ: Ñx¤ýV͘0¡! ”¿9t:5æ«iº®×%%%1wî\n¼ñÆj?˜¥K—²qãFÜnw˜®¾ÿþ{î»ï>þô§?±qãF<|ðAXÊöù|¬Y³†»îº‹nݺѡCîºë®àv—Ëźuëøå/I||<­[·æ†n`ûöíÊ™6m3gΤ[·nØl¶°ÔMÑò„ŽÒ®];ZµjÅÖ­[Ϫ «ÕÊîÝ»+Ü!L^^«W¯®°ff&ݺu«±¼N:°ÿþà:]×9pàÝ»w§C‡èºÎÁƒ«[ßk4hùË_X¹r%[·nåÌ™3õÚÔzþºêÞ”ß}÷]…u¡ÿžÚ®ùàÁƒqûí·ÓµkW"##9tè§OŸ®°_McÏ@ø·º~wBѶÿÏÃê}euïXo?tG2 ÐÏ.„ 5oH4÷LK]Ã0 Vï+cûáð}æ¢1I&gÓæÊ+¯¬Â@yÓóêÞ †Áxî¹çصkWð[=€ÄÄDæÌ™ÃÂ… « aL¸gSºòÊ+Ù´i›6mbíÚµÜzë­¼óÎ;ìØ±ãœË>u꺮“––\úí≷¦}Õ IDAT'Ðu;ùóç3þ|þú׿ViŠ^Sós!Ä…£mÛ¶ìß¿ŸììlÜn7‹…… òä“O²{÷n4MãôéÓf9:[v»ÌÌL>ûì3Š‹‹yþùçq¹\µ¤ɬY³Xºt)   €+VÀðáÉeüøñ,[¶Œ¬¬,\.¸\®:¯¡¤¤„µk×ræÌ<{÷îÅápWë¶Pµ¿®º7¥ðÞ{ï‘ÍÉ“'yðÁk CjSÛ5'$$àt:yûí·)..fÓ¦M@yס€ÊϵÊÎõq«ïïN!šÃ+;uït6 ~tWcÆÀ¨…0ó†D3c`ü0ïªp×UˆF"]“ÂÀëõ6¨;R(ÇÖ-[ª=¶¨¨ˆwÞy‡÷Þ{‹.ºˆåË—òKLL¬µ›lc&Lk7¥ÈÈHæÌ™CFF_|ñ#Gލö:êCUÕ`ón‹¥êÓ³U«V<ûì³2˜¡?q—]vÛ·oçꫯfРAüýïçÆoÄf³±bÅ rrrHHHàúë¯op8Å¥—^ÊÒ¥KÉËË£ÿþ<÷ÜsÕÎ^êž{îá‰'žàî»ïFUU† Æ“O>ìŠòÇ?þ‘G}”Å‹ã÷ûéÑ£iiiDFFÖz ¥¥¥lÞ¼™§žzв²2ºté²e˰Z­äææÖ¸­²ÚÎ_WÝ›ÊwÜÁý÷ßÏÕW_M‡˜2e Çopy5]sJJ ·ß~;Ï=÷Ï<ó #GŽdüøñŽ­î¹VÙ¹›7o®³‹×ëåÓO?eçÎ(ŠlcªªÖx|bb" .dĈ 6Œ‚‚l6[…Ö0ùùùÌ™3UU±X,¬^½šÄÄD’’’¸üòËÑuU«VáóUL…5McóæÍŒ9R‚!„¨ÅªU«š» B!ÄäÇ1a/ù‡1`{"ÑRÉ1 ä÷ûÉÌ̬WÿCMÓðz½x<Ün7¯×[cc2™˜9s&—\r f³™ÄÄDºtéBaa!Ë—/'///¸¯ËåÂívW˜¾9??Ÿ_|‘ž={2yòä Ó?Cù7Ù™™™µ¶äB!„Bü´ÅE†óã¢Qa1·4|ŸErKÕ`ñqùˆ+Z>y–6®ë6JÙ†a°k×.JJJ€òV5ï½÷wÝuk×®eåÊ•W×ï÷S\\Ì‹/¾ÈÚµkyàjœªº°°]-„B!„¸0¤$6^ëù§Â7-vhY]±ÎB„‹tM:5·a:tˆW^y…_þò—˜L&òòò(..F×uÞ}÷]Ìf3dž)º®³téR:wîÌ;<ÑÈãñ4iÝ…B!„†¬ìû>\‰RaqëÁb&ôn–’·,ß¿SÕf…hi¤EL™L&¢££«Ý¦( mÛ¶¥W¯^X,–û'*Š‚Åb¡wïÞ´mÛ¶Â6]×ÙµkN§›ÍƤI“èÝ»7Š¢àõzù÷¿ÿÍöíÛƒŠalß¾7ß|¯×‹¢(tëÖ­Ú©¬¡|¶£Ê]–„B!„"`Lê[×7œŠ‚¢˜X»'‡œâsïž”S¬²vOŠbEaL»Œ#Z}šðúë¯WÆb±pÍ5×Я_?:vìÈxì±Çðx<˜L& ÄÕW_ÙlÆçóѹsg¦OŸÎÁƒ1 ¿ßü7 0{I@—.]ذaC•.HFêB!„BÔ¤o{+—t¶…±U (˜0(fžÝ”ÃýWžÛŒ‹ÏnÊŠЉ‹;;èÆi±…h,Ä4ÕjeĈìØ±£J£ë:~ø!_|1ééétïÞýë_ö1›ÍÌš5‹.]º`±Xhß¾=‡âÃ?dæÌ™L:•üü|®¹æú÷ïÏ AƒøðÃç²ÙlŒ7Ž¡C‡’@^^»wï&##ŸÏ‡alݺµÊ82PÄŒ9«Uší !Z¾'žx‚Ûo¿½¹«!„Bü$-ž Fã‡1ŠÉÂ{{NÓ§C+®ß "ßÜUÈ{{Nc²ØQóGDKkq^ ¦"""HOOgõêÕ=z´JSVVƲeË0`@µ/ñññÁé¨ãââX´hC‡¥ÿþDEEñî»ïRXXHFFÛ·oGUU ÃÀn·sóÍ73~üx’““±Z­x½^ DZZ/¼ð>Ÿ¯Æ&%%…1cÆH‹!„¨…ËåâÕW_åºë®£U«ðôaB!Î7£ºÛ™sI+Vï+;Ç’~ø<¤˜ÀdF1›Q ¿sH;ë0æÍ]…<üÎa”ŠÙÌìKbÕÝQ¥×€-‘ rÚµkÇ‚ ª}ƒn¥¥¥,[¶ŒíÛ·_jzqh×®cÆŒ¡M›6hšÆ‰'€ò6>Ÿ]×Q…qãÆ1cÆ ºté‚ÍfCQìv;ÉÉÉ$&&ÖZçÈÈH,X@»víÂð!Ä…Ëáp0qâD"##›»*B!D³úí´8.é†.?Jà3Qy‹“)ÅÁCïâÏo_¯1crŠUþüö÷<ôÎ!s&SwiÅ’é 2¦8oH‹˜s`6›?~<999¼øâ‹x½›ì˜§Ÿ~šk¯½–‹/¾8ØHQª”ØÍwÞÉÁƒùïÿ˦M›Ð4 EQ¸ôÒK«ëñxزe O<ñ>Ÿ¯ÚúÚl6æÏŸÏ„ 0›Íáx¦¤¤„7â÷û5j;vì`Ú´iÄÄÄ4ú¹Ÿþyn¾ùæF?OmçÒ4U«V±hÑ¢&©‡¢nñ´„BËç&pÏ[çØMéÇV1ŠÉ æ L ¼·;‡5;3{xGÆöM O­£Ë?®æ–ª8éfkfkv@1E`²XQÌV¦D±lnkL&“´†ç bÎQtt4sæÌA×u^~ùåØիWÓ£G†ŠÝ^¿ÑÇûôéCjj*iiilÞ¼9Ĥ¤¤Tx „0K—.¥´´´Ú²l6 ,àÊ+¯¬q¶§æ´wï^zõêEß¾}« .ܼúê«Áe]×éÖ­#FŒ¨3uw»Ý¼õÖ[\uÕUò­ºµ0 ƒŒŒ Ž9‚Ùl¦S§NL˜0(ÿ›Û¸q#§NB×u&NœHçÎ)++cÆ  i}ûöeôèѬ\¹’ž={ràÀFMïÞ½ùþûïÉÈÈÀëõ’˜˜ÈäÉ“9sæ 7n¬RŸôôtz÷î]a|šçž{ŽîÝ»sòäI Ã`ìØ±¤¤¤››Ë–-[(++#22’Ë.»Lº3 !„¸ DÛMücAK×[7%å‡{ù¡—`  +&Ð̬ٓÚ]'1 Ã?üЊ“ÅbG1—·¦™5(–%Ó“0›ÍÀˆóŠ1a””ÄUW]Pcãt:Yºt)ãǯWãr¹8zô(ÁpÂ0 éÔ©f³¹JSy¬(a.\ÈUW]ERRÒ¹^n£(**¢_¿~gÕ¤pçÎôîÝ›¸¸¸ÆªZЬY³ˆŽŽÆét²víZâããéÓ§O­ÇØívÆŒƒÃáhôú q>ËÊÊ";;›E‹¡( ªZ±iòÅ_ÌäÉ“ùöÛoùøãY´hQ°ëPll,‡×_nݺѮ];JJJˆ‹‹ãÆoÄl6ãr¹Ø°aóæÍ#66–={ö°mÛ6¦L™Rïqn·›‹.ºˆ‰'’Íš5k¸ñÆ1™L¬]»–™3gÒ¦MÜnw½w!„â|óÛiq¤§Ùye§³­cPŒò{MfPLº C1cè04 ]Œà1Š©|¦%Ådf`—V\7"–ôžQ˜L&i #Î;Ä„I}ØÀ¾u…1¥¥¥üñä³Ï>CUÕà´Ô†a°yófzôèÙlfëÖ­õ aæÎÛbC(¿®†ôéùäºuëFç΃ÛL&Sðõ«Glذ!¸^UUvïÞMii)eee8Îàq}ûö .Ÿ:uв²2>ùä|>_½þ†C™L&Ú´i”éË™3g0 ƒ¨¨¨à6 ^…B\èFu·3ª»ÌS>2yøâ¸cù~Š\:zÕ$ÕPÿ00£˜”òîJй¼%Œ®a`€QÞm)6ÒDçDý;ÙIïI¿ŽÌfs…FBq>‘ &ŒêÆð…ÚóٌÍfÃãñ`Š¢`†a°fÍú÷ïßïç‘GiÒ&77—;vPVV†Ýn'==Ö­[ðúë¯Ó½{w¾ýö[† F=ÈÎÎfÇŽøý~âãã9sæ ,¨PæŽ;ÈÍÍåí·ß&>>ž¹sçVØ^VVÆ–-[(,,DÓ4zöìÉðáÃùüóÏÉÉÉáÝwß%%%…)S¦ðòË/“ššJvv6†a0jÔ(:uêTc¡|>ï¿ÿ>ƒ ªžx½^²³³)--åøñãœ:uŠÁƒåß’¿óÎ;ÌŸ?€üü|¶nÝÊœ9s€šÇ…ÉÉÉaÇŽø|>bcc+ÌruâÄ víÚ…×ë%>>žqãÆYíc,Ä… 66–E‹qôèQ233Ù¶m×^{m•7U¡o´NŸ>ÍÆ™8q"‰‰‰ÇȪìÚl6Ú·oÏìÙ³+¬ÿî»ïj횪r·I“Élm#á‹BˆŸ¢¾í­ômomðñÏ0†a ë:º®—Ÿ}àÇÿÿÁKh+˜Àv!Î'Ä„Y¸Â«ÕʰaÃØ¾};ݺu£wïÞìÙ³‡¬¬,\.ûÛ߀ò¢©BŸÏLJ~Èe—]FBBYYYlذŸýìg˜ÍfJKK‰‰‰áºë®Ãd2áóùøè£˜1c‰‰‰?~œcÇŽU)wäÈ‘äää0vìØjg}r8¤§§ƒ×ëåwÞ!55•’••ň#‚ßD{<úôéØ1c8}ú4ëÖ­ãºë®«±Œ¶mÛ ª*ëׯ碋.ª¶‹ªªdddªª¸Ýn²²²ª|P;›Çò£>â²Ë. >6ßÿ=Pì|òÉ'Ìš5‹˜˜öïßÏ®]»˜0aB•ÇXˆ …×ëEUUÒÒÒHIIáùçŸÇëõÖÚr0??‡ÃAÛ¶mñz½œ:uŠþýûW»orr2ÅÅÅ=z”®]»bªª’ššzVƒu|˜­[·6¸EJNNqqqÕ>6999¸\.¶mÛ€ßï¯Ð…"ô1âBQPPÀÎ;q:hšÆðáÃëg¥{÷îdeeñÒK/áp8èСC3ÂEDD0kÖ,¶lÙ®]»°Z­ 0€´´´³ªgVV{öìÁf³1sæL, QQQLš4‰ÿüç?DDDàp8˜4i’ Ö+„BÔCu­_jƒ˜Úî q>‘ ¦‘œÍ¾ªª2iÒ¤*MÛccc9r$&“‰‚‚vïÞ]më—PV«•ë®»®QæÕ4­Jâ÷ûƒ-3*¿êºÞ à¥²ÜÜ\¶nÝJzz: UèÆªòãè:PW]ºtáСC\rÉ%DDDÔY§îÝ»“‘‘ËåÂb±œõLOµ=6V«•ääd¦OŸ^e›ü‡#Z²ÐoµÎV»ví‚Ýù* ÌZðë_ÿ(ÿ[™6mZ½ŽhÓ¦ óæÍ;«z…–c2™˜:ujµû¥¥¥u¨#„BˆÕõþ¡±ß7ô=Œ !}Q Œ¹þúë±ÙlU¶ZÆ,_¾œM›6áv»+l4Ñóx<¼ÿþûu1V«•ùóç3oÞ¼` •pJNNæôéÓœ9s€ììlt]'>>¾ÆýsrrÈÍÍ ///8~ƒ®ë|þùçUª³Ù J ±Ùl´nÝMÓÈÉÉ ~ëm·Û«LÙ}èÐ! üö²²2’’’j-`À€´k׎7û§ÖV¿œœl6ÑÑÑØívü~?999Ám5M#n6›QUµÖǦM›6”””»q†Qcð$DKÚ4ølÀB!„¨NhW¤¦H4M“îN¢ÉH‹˜FVW˧ÓÉ£>ŠÅb©¶›’Ïçã›o¾©õNèÕÂ@yè1qâD¶nÝŠ¦iDEE1uêÔÇ*±ÛíL˜0Í›7g=±XÊŸr‡/¿ü’Ž;VRõîÝ›?þ˜±cÇ’ššÊñãÇyã7°Ûí$''Ï9pà@¶mÛÆÁƒƒ-HNœ8Á¾}û°ÙlL™2‹ÅRk£FbÆ lÛ¶ÁƒW©ßÚµkƒ-l"##ƒßÄ+ŠÂرcÙ¸q#‡ƒ¸¸8"##«}LúõëÇš5k˜:uj…ǦM›6DEEå](¦M›ÆöíÛÙ»w/ôë×®]»ží¯Lˆ&£( f³ŸÏü;B!„8_ø|>Ìf³„0¢I„ûYVŸò”:–C×™BÖU¾¶î–Í•–-•~Fçååíª«‹O¸åååñöÛoׯ(ŠBTTwß}7'N vSòx‹ÑÈ‘#›¹FBˆp ôÝ6™LX­V ‚Sà !„B´tB bDc“®IÍ ®nJõq¾tG¢9Hפ¦Ú=I×uTUEUU<QQQÁéÞ…B!ZªÒÒRœN'v»‹Å‚Åb©Ð*FB™Æ÷Sìš$³&5ƒºfSª‹ÍfcþüùÌ;WB!D‹¬7зº¸¸¸Æ.•B!„-Ë墸¸¸Úqa„hLÒ5©™Â“ÉÄ«¯¾ŠÓé¬óEQhÕª×]wsæÌ‘FÑ"„~cd2™°X,8 PU•˜˜˜f®¡B!DE%%%”””àp8*´‚‘®I¢)HÓŒaLBBo¾ù&ß}÷º®W»¯Éd"55•k®¹† &ßĵBˆŠE!´›g ˆ1 ³ÙŒÃáÀétâr¹HHHÀjµ6cm…B!ʧ©.((@×uf³“ÉTí ½ȈÆ"AL3KHH`ÆŒ¤¥¥±gÏöïßÏwß}Gqq1±±±¤¦¦rÉ%—0dÈzöì‰ÝnoæZ !D¹@Ú*&´Y¯ÍfCUUrrr°Z­ÄÄÄ›ÿÊ›!„B46Ã0Ð4 ŸÏGII >Ÿ›Í†ÍfÃl6רFÞ§ˆÆ$AL `·Û0`)))Lœ8‘ÒÒR|>P>(ott4‰‰‰ÄÆÆ6sM…¢f1º®c6›‚ß0Y,TU ~USë?!„Bˆp ¼‰ˆˆ U«V˜L¦`K˜Ð÷,¾ˆ¦"AL +a‹â¼ÚE©røfI×õ` cFð&„BјB[º™ÐT a$M‚!„笺0& ̦¹–Ö0B!„hj¡ãÀ„0€„0¢ÉI#„",*‡1†aTd€à`¾ÒF!„M¥òø/¡ïO$„ÍA‚!„aS9Œ*2º®Ë›!„B4‹š˜êî ј$ˆBV¡Låû•[È!„B4% `DK AL Ün7>ŸMÓ¤ ½-@`Zd«ÕŠÃáhîêˆzm¸/„BÑRÈ{Ñ\$ˆ©DÓ4œN'ªª6wU„! Ã@UUTUÅçóœnP´\¡op$ÔB!Ds“ðE´ÄT"!Œ-Ÿªª8N™îý<#o|„B!„é¬ÂívK#ÄyBUUÜnwsWC!„B!Ί1!|>_sWAqäoV!„Bq¾‘ &„¦iÍ]!ÄY¿Y!„B!ÄùF‚˜2¤çù›B!„Bœo$ˆB!„B!„h"Ä!„B!„B4™¾º3 ]×1 “É„É$¹™B!„Bq>“ ¦Ò4 ¯×‹æ/ÁnÉ¢¸pû[ã§v»›ÍÖÜUB!„B!DHÓ¸\.Tß7¤u܃£•EQ‚ÛÔ279§â9Y4ƒÖm’+lB!„B!DË'}]Zââb"#2èßk;‘Qþ*A‹¥•ƒŽi.ê°’œSÿ“c„B!„BˆóŒ´ˆi!<6e?© grý¬z5]Ÿ9)uj¤t¶rŬ¦NŽ#2)†¼Í'‘œœÜ¤õüûßÿζmÛ0›Í$&&2|øp®½öZ"""êUÆwÞÉØ±c¹âŠ+¸÷Þ{™2e 'N¬v¿ßÏ5×\ÃÓO?Ýä×+„B!„B„“1-DQQCûì,?áãŽß£ Èa†Áo|d,åÛCeÜñËD&EѺp'.×"##›´®S§NeáÂ…ø|>Ž9ÂSO=…®ë,Z´¨^Ç:”®]»6r-…B!„Bˆ–Gº&µ^¯—XÛ7˜­å¹ØòGO›ïÁçó“ŸW@î™<ÊÊ\¨ªÊëod³o)Zgâr¹š¼¾‹›ÍFtt4dúôé8p ÞÇ_{íµ 0 k(„B!„B´LÄ´n·›Ä¨Ï8“ë翟— ª*EÅŨª†ÉdBõ«ø}~TUå?ëÏ`v´ˆqbòóóéܹsðþM7ÝÄW_}¼äÈ~ö³Ÿïß{ï½|üñÇ5–§i¯½ö·Þz+7ß|3/¼ðB…íªª²jÕ*n½õV-ZÄ?þñ<OX£òr IDAT…ò·oßÎ<À‚ øâ‹/Âq™B!„B!Ä9“®I-€ßïÇa+âÈÉñ¡ª*†a`µX1ÙÌf3f³ MÕðùüœÈ.“¥Y‚˜ýû÷Ó¿4Mc÷îÝìÞ½›Gy$lå¿öÚk|ùå—üö·¿Ån·óæ›oVØþ /PRRÂÒ¥KÑ4§žzŠW^y…ŸÿüçÁ}{ì1n¹åæÏŸO»víÂV7!„B!„â\H‹˜fæóù0+9DGi´mªª¨ªŠÍA«ÈH"#DF:P5¿ªÒ6é‡üLó7KOž<ÉC=IJeËØ²e ^¯—>ú(,eûý~Ö¯_Ï/~ñ RRRHNNæÖ[o nw»ÝlÚ´‰›nº‰¸¸8¹æškسgO…r&NœÈ¥—^JJJ 6›-,uB!„B!Ε´ˆiF>ŸgÉ· èµ|åëÚ¶±2°_+>ÛW„æ×°ÄX0™Š‹Jq¹<†Áe—µ@óU™âº)̘1#80¯ÛífóæÍ¬\¹’>}ú0tèÐs*;'']×+ æk2ý˜ž:u ]×ùýï¼vMÓªŒ•Ó³gÏsª‡B!„BÑ$ˆi&¡!ŒÅb€¡ºQ,þô‡n\wÃ>òó}äååcºa`è‹vfØà8JÏä7óU€Ãáà²Ë.cçÎdffƒ˜†v™RU]×Ñu³Ù\e{«V­X¾|9ÑÑÑ ¯¸B!„BÑ ¤kR#3 ¯×‹Ë墬¬Œ²²2Š‹‹)-þæÇ00ÊNÒ%’wÞÌ—·%.ތɤӧW+V,íË~× Þ ÖïBII1ªª6ÛõÄÄÄC»ÝΉ'*l×u½^å$''Ô8 SëÖ­q8|öÙgçP[!„B!„¢yH‹˜Fäõzq–äЩõ.âcrˆ°(fCÕQ,fø¡k¡ûÈ?üÿ;Ó•a#Ý(fÉmí<ü@ßjËõŸ9ζíœþöÿЮ]{EAQ,Kµ­IÂEÓ4ü~ð¿þúk233¹æškèÕ«ü1C† A×uþñÔÅÄÄpæÌ ÃÀáp0~üxž{î9î¸ã’’’X½zup_³ÙÌìÙ³yå•WHLL¤_¿~R\\L·nÝíš…õçr¹xýõ×ùøã9uê‘‘‘tëÖ믿ž!C†œsùãÇ'22’ÿüç?a¨­B!„MK‚˜FRXXH|ôzöýŤÚøH‰iˆdh”åeÍî™Ä%t¢ýÉtj¯b:ŠÅ‚¢ü¸¯æ.Å}ô n‹æë¾ÄĔ݊ÿýïÉ _]ˆ¦*ä÷CèÝh]wÖ¯_Ïúõ눎Ž&%%…%K–§°^°`O?ý4wÞy'mÛ¶%==œœœË›9s&Ï=÷ßÿ=K–,ᦛnâÅ_äá‡&**ŠñãÇÓ¶mÛàþW^y%V«••+W’——Gll,³gÏ– Fˆ@×uî½÷^þûßÿÏ€ÈÉÉaß¾}\wÝuÍ]=þøÇ?²qãF^yåÒÒÒš»:B!„â'&Ü#½Ö§<¥ŽåÐu¦u•oíûes¥eK¥ŸÑyyy»ªÃ$??q3ÉmNÕïÃàøa߿ާK»-¤uu£û½hÎtO)†ÏƒZR„Z’Oq‰™·2'‘SITT$]SlÌš^DlŒ¿ByÇý|[ð3’“ۇ嚄h©«¬+**¢K—.ÍPqàÀn¼ñF ÄSO=TÛívc³Ù* ¾ÝPçÚ"F‚!„Bˆ–ÃjµJ P+ý4½Ò²²LÈýÐ!Û YgT³®òrM6j5¤EL˜¹Ýn¢">«Âä竼þV>;v–RP¨gfäð(®»º5I‰P:¥¹ˆJú˜ø„òé“L6°”‘}ÚMYi4e®²K†Sdô§ÿ°Žøþ»«€+f”â÷©üõáþ»·ŒØ8…ùW·fÊä8º›Þådñ|bcc›ëáBüÄäææ寅ªª”ì ë:«V­âÃ?äôéÓ¤¦¦²xñbFŽYeŸ 6púôiºwïÎM7ÝİaÃ*œÏï÷sã7røða–-[ÆØ±cq»Ý<ûì³|úé§8NÈ]wÝE»ví‚! ”·Þ3›Ílß¾½±!„B!‚$ˆ ³¢¢|†_ô5Pþáã›C~÷Çï)*V1 Ã0ÈÎöóÎj7›6°üáTzõŒÅD\¬° •f±qKùþ+‰ŠŠÂf·Ñ¶}}“’‚ß0·‹}¨V6~yß1¾üʉÓY†ù”™¿úˆ%K–ðÒK/1a„`3vìX™ê^!„B49 bÂÈårÑ6z/&KyãrëÜ÷§, |èºFaq ~ŸŠÕf!ªU+ò TîùýÿxóÕ~D:L(f+:šó8·$bos-#kè^GÏ®>އý_Sætg&òkÿsšáÃÒˆµ}ÇӺ·ÑBÑXZ·nÍŠ+xâ‰'8t诼ò ¯½ö'Nä7¿ù ^¯—5kÖеkW^zé%, k׮塇âÕW_eàÀœ9s†5kÖЩS'^{í5¬Vkµçúì³Ïø×¿þEÏž=ùõ¯ ÀáÇٱcC‡eÙ²ex<6oÞÌÉ“'?~<“'OfãÆ,^¼Xº& !„Bˆ&'AL¹Ýn:'”k»þÃNçzÐtüüB MÇd2¡ú4Êpc·[ÉÉQùϺ\æ^Y>­á)†0uqa6•wóy}XíVlV+‹…¢¢b4­|–"“~ µžSG !D8 <˜—_~™Ý»w³~ýz>ùä6n܈¢(L:]×6lKùA“'O桇âØ±c9r]×1bD!ŒÛíæþûïÇ0 –,Yì(cÏž= >¼Â1%%%sÁB!„Bœ bÂH×ul¶ÍÝ»¿MÕðk~"ÌfL˜L¦n &³ ¯ÏÏîÿƒMSP#/¯×@£~O:ÅЧ—ƒý_”`RÌ”•¹p»<\6µ †æ§°0†˜7•µBTGQ†ÎðáÙ9s&¿úկؿ°û¦iÁ}½^/Š¢`·Û(++¶ò«ŽÝn§gÏžäåå±zõjúôékÈ!Ü}÷ÝŽiß^/B!„Íïܧ¯˜Í?ŽÅâ,ó£j&³ ›ÝVáf·Û‰°D iNçá‚™6mÚÔãЋ1é‰x³ÿG±¯{ð›b!„hl~¿ŸƒVX§ªå-ôƒcÅlß¾Ÿ¯|pò;v`F°›Pç΃ëûT¦( K–,!22’>ø€;vššŠÉdâÛo¿%!!.]ºo×Â@KœÒÒÒp^ºB!„õ"-bÂÌÐ U:tˆ@SU,Š»ÝÒ¦üæt–¢ª*:Ù‚Ç躷Öò5M£¸¤”3yE¼¹!‘›ѽGO<Ö?´¸þ÷½¤Ó¾8bóHŒ‘qb„n÷îÝÜ}÷Ý$%%ѹsg\.‡ફ®¢k×®Œ1‚;wrýõ×Ó£G222°Z­,Z´€=zpñųÿ~-ZÄСC9rä?ÿùϹ袋‚çjÓ¦ ¿úÕ¯xä‘Gx衇ø×¿þEëÖ­™={6«W¯æ¦›nâÒK/%77—²²2xàÒÒÒX¿~=?þ8£Gæ†n¨± ”B!„áî>+õ™šG©c¹¦u•o5­7UZ®|³Ý{k««˜Ûí®Gõkæv»IˆØŠ5*€˜¨Þ~7¿_%**›ÝJDDVkº¦’›[ˆaèüaImÛ–7Éwçç‘çI¯vvUU9úÝq¶î9̉ÓÅ(¶Ö¼»&‹^]}$ØËМŨùÙgîãﯘÈVÆ¡GÄò݉< KHŠ 6ýâBQÝߊÇã!..®j# ÃÀb±ŸŸOVVN§“=zpÇw0uêTÒÓÓq:=z”£GÒ§O|ðAºví,gôèÑqôèQ>ÿüsl6ƒ ¢C‡¼üòËDDDpÝu×Ñ«W/öíÛÇÑ£GÉÏÏgìØ± 6 «ÕÊ‘#Gرc^¯—öíÛ3zôhE¡gÏždgg“™™É‘#G2dIIIÍõ !„Bü¤ýíoûÿ`z¥Ÿüð3t™j–«S×öfî9ÃĘBÖUÄT]ÊÃ¥ÐeK¥ŸÑyyy» £êï$??¿Õ¯Yqq1±¾‡ÿöî;>ŽúLüøgvW«]iÕeYÕ¶,[®ÄEŒ« 6.tæ€páHà€„\€päŽÜårqH¸@BÀ?½›æ`pŒ…dlËcãnËEÅê]Ú:3¿?d-»ê²V’Ëó~y_šýÎwž™]ï>û-¤ŽO„3ÓEÿê7GxûÝ"ï—kH0õõMxÜntn[žÌ“¿€®«ß]H]ÈxÇ9ðUSSÃÚœÝÔÛ]” .e ŽÆZfMª!cd1‘ÑTÓ@~që~-l4§ ¢‰É#˜6q©Ã’1eÌqሉ‰i³®¦¦¦[ã, !„B!–Ùlž Ô*àiõ·%)㻬û,ãsß÷†ÏãÐu"§;I›€%vdŒ˜²Z­)î¬ñ®{üÑÜýÏ)(ŠŽÝî ²¢§Ã‰¢èÜ{ÏPþó±ÑÞ²jùqŽ”Lè° ‘Çã¡®¡¹ÕNyuó>‚-6LÖéä^Äû_߯ÚS÷Qb½‡˜„æz]·§yP̂’Ç[ýçµ×^kw½ªª¼õÖ[ýB!„Bˆþ$cÄÙlÆ`›J]Õ^ÂãÃP &ŒF…Ÿ>˜Æí·$“»©‚Šr'±ƒ‚™=#–Aƒ¾F­«¤êT ÆðާkÐ4«5˜IS2°76ç׬Þn·sªp ``è°QÞõ M?æ‹É{ï½ç]ÖuaÆq饗¢(7³Ûí¬^½š%K–È8=B!„Bq‘“DL€ 2”õ;&pÝUùü]÷¢AqÁÜx]R»ÛxªJ°ÞÊW·qÉÔÀt§Ð´¶­¦Ú['zfáÂ…Øl6Y»v-‘‘‘¤§§wºÅbaêÔ©2>B!„BéšhAAA$úMÉ誆ær‚®µ[Vw9h<¸ƒšmëØpòJ’G-êÓ©¦»h¸!z 44”„„ï´¼Q…!C†tÙrF!„B!Ä…OZÄôÁƒãtfñÑç›).j`ú¤*F ­#Ȩ¡iº³ {u=šØz|"ƒ£¿GÂØ›ˆ‹‹ë²nÍíî²L»ÛiF£Òëd@ee%Û¶mÃn·Ìå—_îíµjÕ*RSS9zô(¤¥¥QZZÊöíÛq»ÝDFFRQQÁM7ÝÔ¦ÞÎʽñÆ :”òòrt]gêÔ©$&&vÏo¼Á!C¨¨¨`Ò¤IœC×u6lØÀ?þñöïßOrrr»×K ¼ýöÛ(ŠB\\\»÷»»ÝÅìB<­¯÷žcWå{sÎýZ<_Ÿ?UUyöÙg=z4‹å¼=!„8Ÿýú׿þ€ ÿ®G-Á¿»QOº¬+Q I‹˜ bÊ¥ŒÙûr###/˜®IBákøðáÝþ‚³eËjjjX°`ÁYíkß¾}rÛm·¡(J@fç¦Þ^+}¥'×{ëMlçêùB!Î’ˆ  ÈÈHù^!:qÅWôÛ¾jjjˆ‹‹#44´ßö)„¯þ¼Þ{ê\ŽM!„¸ÐI"Ƈ¢(´7›’âܤ(žøMôµ·ß~›K.¹„qãÆpòäIòòò¨ªª"44”‘#G2mÚ4vîÜɶmÛ8zô(ãÇ'33Ó¯.]×Ù¹s'û÷ïÇn·“@ff&ááádggóí·ßpèÐ!¢££Y¾|¹wÛµk×¢ëº÷}UUùóŸÿÌĉ™5kn·›çŸžÛo¿›ÍF^^GŽÁãñ––ÆÌ™3ÚzÑårñî»ï’žžÎe—]ÆÛo¿MZZ§N¢¼¼œððp233½]I:;þžßgŸ}Öé¾|uôœuS‹Ý»wóí·ßÒÔÔD|||›ÇÛ;ªªvxþ;ºV:‹³…ªªlÞ¼™ãÇÓÐЀÍfã²Ë.côèÑ@s7;“ÉÄܹs½ÛìØ±ƒÒÒR,XÐé¶Ðözïɾ[?~œ;wÒÔÔÄàÁƒ¹òÊ+;üѧ³óÔZëØººÞZtöÚ<}ú4‡¢¬¬¬Íö=‰­£ç®;笫ãÐ4-[¶pèÐ!t]gذamößÙ9ïìߺu+ÇŽã–[nÁ`0àv»yíµ×˜:u*cÇŽm÷9Bqq’DŒ£ÑˆÇãè0„Ýt!Œ£t1s:|úé§Ìœ9“ôôt¼ïÁ¸ÝîN»?lݺ•'N°hÑ"L&7näƒ>àöÛo'++ ³ÙŒÝngÞ¼ym¶>|8999Þû………äçç{EEEDDDAvv6‡ƒ›o¾MÓX·n›6mj“:[š¦±fÍ¿ÁÊyyy,[¶ŒˆˆòòòX³f wÝuF£±Óãïéñuµ¯=g]='F£‘;wrèÐ!æÏŸOHHÅÅÅX­Ö.ÏEnnn‡ç¿½k¥«8[F"""¼ñ9r„uëÖ1xð`¢¢¢HOOgýúõèºîMü;vŒÉ“'w¹mWº³}mm-eeeÜxãÞdàªU«¸óÎ;1™Ú~„ëìaÞ¼yØl¶nŸ?!„IÄ´b³Ù:lÂ,„87˜L&ùp{P…ë®»ŽÂÂB8À§Ÿ~Jrr2‹/îr[UUÑuMÓü¾üÆnwY>|8'Ož$55EQˆŒŒdøðáìÙ³‡Ñ£GÓÐÐ@bb"uuuÜzë­g5󒪪<÷Üs~ën¸áHII¡ººšo¾ù¦Û¨vçø»{|=ÑÙsÖULN§ Ó±ØÚ;--ßzrþ»{m¹ÝnÞ}÷]FŒÁå—_NXXï¿ÿ>š¦yËŒ5ŠììlfΜI~~>&Lèö¶9Ûí;ºÆÏæ<õ—žÄÖÙs×Ûs®iº®ûu5뎖sÞÝ÷¿ãB!Z“®I­´ô? Ád2É` Bœ#EÁd2BDD„ŒsINNfÞ¼yÜtÓMäççÓÐÐà}¬£/XÞ.#Ðü¿¬¬Œ˜˜˜níwøðᓟŸïíj’ššJyy9‡"%%ƒÁ@xx8f³™üüü³:>£ÑÈý÷ßïwkI„……±`ÁvìØÑí}tçø»{|g£½ç¬«˜"""¼÷;ÒÞ¹èîùoïZéìÚ(++Ãn·3}útbbb0›ÍTTTø•KNNÆívSXXHyy9C‡íö¶éÎö¾]ÉZ”–3îÎŒ IDAT–¶{÷ö:í©î&?àìbkï¹ëí9oïm­³sÞ×]uu5{öìaÆŒäääxB!„/iÓ«Õ*Ý„â,y<‡ßºàà`¿û‡ƒüü|† ‚Åb¡¨¨ˆ   ï{¯ÍfcïÞ½Ô××c±XüÆ1›ÍŒ7Ž/¿ü’«®ºŠ°°0¶oߎÕjõ~QîJXXááálÛ¶%K–xëMLLdãÆÞ±! lÚ´ ›ÍFrr2MMM455y»(X­VoË™öîweÈ!L:•üãÜrË-ΊӓãïîñõDgÏ™Ñhì2¦´´4rrrX°`¡¡¡‘œœì÷ܶw.º:ÿ­¯UU;½¶Z„„„àr¹Ø»w/#Gޤ  Ào'EQ9r$ëׯgøðáÞ$pw¶mÍ÷ºèÎöõõõìÞ½›´´4¢¢¢Øµkº®“––Ö¦¾î\§ÒÙk³==‰­³kÌív÷øœû2›ÍŒ3†ììl®ºê*l6;vìð+ÓÙ97 ^㺮³nÝ:222˜ºÅ]wÝåwßétrôèQ6oÞŒËå"22’«¯¾ÚûEwôèÑœ8q‚×_äädo2¡ÅìٳٴiŸ~ú)𦑒’µ×^Û£8‡ζmÛüºè´L}ë›Ð¹ôÒK1lذúúzBBBÈÈÈð~‰œ4iÙÙÙTUU±hÑ¢6÷»ãÒK/¥¤¤„5kÖ°lÙ².Ëwçø»{|ÝÕÕsÖULsçÎ%77—÷ßUU4h±±±m¾È·>]ÿÖ×ʬY³:³ETTÓ§OgË–-äåå1tèPo’ÃרQ£øæ›oüÆÔéî¶¾Z_]mÇàÁƒùꫯ¨­­%11‘믿ÞÛ’©u}]§@éêµÙžîÆÖÙ5v6ç¼µÌÌL6lØÀêÕ« fìØ±~‰œ®Îyg×ø®]»p»ÝLš4 €+¯¼’×_Q£F‘œœÜ£8…B\ØÝï¦;õ)],û®3ø¬k}ky¼å~˲±Õ²©Õß°ŠŠŠ-õQBœßjjjÎêK¦B!„¢™Íæ©@= žVu@kµ¬û,ãsß÷†Ïãø¬ÓÛY×z¹#K"È1B!„B!„ýD1B!„B!„ýD1B!„B!„ýD1B!„B!„ýD1B!„B!„ýD¦¯î.— ·ÛM_ÏÔ¤( AAA˜Íæ>ÝB!„B!ÎŽ$bú®ëTWWãv; 6›1û¶’Û­ÒØXÉd&** E ôìäB!„B!„è éšÔ‡p¹„X-}ž„0±Z‚q»444ôùþ„B!„BÑ3’ˆéC‡ƒ Sÿ7: 2p8ý¾_!„B!„BtNº&õ!MÓ°XýÇkq8\TVU‚  &&Kp°wUP·Ý !„B!„"P$Óo®ù{°' õZœ&n[t­_2F!„B!„çIÄô£ÂŠÓÔÔA1´Þ]ãTY1é)©­W!©¯gŽB!„èŠLh"Î’ˆéGšúâu¯(4ªý;&̆ X»v-ÇŽ£©©‰¤¤$-ZÄâÅ‹»Üö¾ûîcÉ’%,\¸°×q².!DàµN¾H2F!„EQ¿Ï"’”E1ýÈ ôÝØÈŠ¡ÿÞDV¬XÁ7ß|ÃwÞÉøCÜn7GŽÁf³õ[ gëoûÅÅÅ<þøãŠ<ß:º®{o­B!„èK- EQ¼7hþ<"É1$Ó""¡¶oꎊŒè›Š[ÉÎÎf÷îݬ\¹’ïú´´´~Ù¿âÜ×QFUUÜn7š¦¡i±\!„¢sƒƒÁ@PPF£Ñ/!Óò¹E2¢?I"¦EZÂPPÐ ì/Á ‘Ö°€ÖÙ‘W_}•;ï¼Ó/ ãËãñ°råJ¶lÙBEEƒ â¶ÛncÞ¼yÖ»jÕ*>ýôSª««;v,<ðñññ,[¶ŒÇ{ŒI“&pøða~ò“Ÿ°fÍšïûwÞá7Þš»V-Z´ˆ|]×yûí·Y»v-555Œ7λhîþ´lÙ2Ö®]˾}ûxâ‰'ÈÈÈ8ës(Ä…Ì·ÅKËÍãñàr¹0 X­V‚‚‚0 òG!„}N×u4MÃívc·Ûq:˜ÍfL&S›„Œ|6ýE1ý(ÜÊ ©Yœl<®&£†„ÆÔ÷Ý‚œN'EEEŒ3¦Ã2&“‰¤¤$ž|òI‚ƒƒÉÉÉaÅŠŒ=š”””v·yçwÈÎÎæç?ÿ9ÑÑÑìÙ³‡ÈÈÈÇ×Õ¾o¾ùfšššÚtMzå•Wغu+O<ñ‹…^xŸýìg¼üò˘LÍ/‘ÿú¯ÿâÇ?þ1wß}7ÉÉÉ=ŽMˆ‹Aë$Œ¦i8N"""¼¯'!„Bˆþ¢( F££ÑˆÅbÁãñP__Çã!88ƒÁà-'ÉÑ_äSq?K DRè ã¬£ëz—I’¥K—z—o½õV>ûì3<Øn"FUUÞ|óM~ûÛß’žž@VVÖYÇØ“}¸ÝnÞ{ï=þð‡?šÚ<ëÔ£>ÊòåËÙ¼y3³fÍ`áÂ…,Y²ä¬ãâB盄iézd·Û é°B!D3™LDEEÑÔÔDSSV«ÕÛuI’1¢¿H"Ft[tt4М5jT‡åjkkY¿~=ß~û- {o­¤¤»ÝîMÂôVOö púôiTUõÛ¿Åba̘1x×;6 ñ q!j„QU‡ÃÍfÃb± ptB!„m…„„`0hhhð~^‘dŒè/}7èPEE§N¤®¾®ÝÇ]n7EEEáv{Ú-S__Ç©S'©¨¨èËPýDDDÅŽ;:,ãp8xਬ¬äŽ;îà—¿ü%iiiÌÙÐÐt>ƒJwgWéé¾\.—÷‹£/³ÙŒÙlîÖ~…ÍZ1.— «Õ*I!„BœÓ, V«Õû@fuýEZÄô³ýû÷S\\ 4÷C;v, ÞÇN'Û·mÃq¦G~þq.¿ü2¿¤@ñéÓØ¿ßûF‘””Ș1ýÓbãÆoä7Þ ++Ë/¶¶–ù—ñ®;vìåååíÖ—€¦i:tˆqãÆµyÜb±pêÔ)&Ožì]×Ñdw÷íñ|—ÜJLL`ïÞ½Þ[âY´hQ»ûB|§åõØòá¥åõ:a !„BtKhh(N§ǃÁ`@Ó4 ƒ´Š}JZÄô#»ÝáMÂ@ó˜üü|¿2EEEÞ$ €Óé °¨Ð¯Ìñüc~Ɉ¢¢b{Eíï†n`äÈ‘Ü{ï½|üñÇœ8q‚ÂÂB²³³ÉËË#**ŠÆÆFV¯^M]]¹¹¹ <Ø[GDD%%%èºNxx83fÌà™gž¡  €¦¦&òòò°Û›gܸq|öÙg”––rúôiþøÇ?âv»Û­«;ûŽ‹‹cïÞ½”––âp8 aáÂ…<ýôÓ:tˆêêjþò—¿)3# Ñ…ÖIQUUq¹\„…õÏ,nB!„†ËåjÓJ^ZȈ¾b p}ÝI*],w´®õ­£õ†VË­oÁ<òÈÝÝ;œÞill$(è»S\pªêš*¿2‡‹#Ò¼÷wîØ Šÿ ¾ªª–´´TïýxG÷na4š‰ŽŽòÞw{Tl¶ÀϤd0˜?>ÁÁÁlذ·Þz‹Ï?ÿœÒÒRRSS™4iÁÁÁ¼ùæ›|ðÁ¨ªJRR‰‰‰ÞqX"##y뭷سgW^y%=z”—^z‰wß}—’’¦L™‚ÍfcܸqìÞ½›•+W²cÇ®¼òJ<È­·ÞÚ¦®k®¹¦Ë}:”ƒò /pøða²²²ÈÈÈ ´´”W^y…?þ˜˜˜þýßÿÝÛ­âÓO?eÔ¨QŒ92àçSô ‡ÃqV3o‰³ãÛF×õ>yïB!„è+F£‡Ãáa 𶆑V1}ï׿þõÿ\€h­þræ¯ï2í,·çœÍ¤úª t"Æà³®½DL뤋BsrÉwÙÔêoXEEÅ–þÈn–––bý®KQMM-9_æb ûn‘ŠŠn¹åFïýœ/¿Âíqx_ðº®c2Y¸òÊ™Þ2ï¼ý1±ß%]êë›ÈÌœETÔw_<›ì.¿– B\Ljjj:tè@‡qÁóí–¤ª*v»ÐÐP¬VëG&„BÑ3v»ÆÆF¬V+F£ÑoZkÑ·ÌfóT PO«¿-IßeÝgŸû¾7|‡®9ÝI,‰ ]“úQdd£™ÂÂRª*kÉ?VȘ1£ýÊL¹t2ùG‹(/«¢¼¬ŠcG ¹ôÒÉ~eFËñã…TUÖRXXŠÑhöKÂ!D_ó)©å¦ªª r-„Bˆó’ÙlFUU¿Ï6 Ý“DßÁzûÙ’%WqôH>••U̘5„ÄÿV+6[(wÜy û`ì˜QXCüg™0aƒâb9uâ11ÑŒ9¼ßâB_¾VZ·B!„8ß´ ÔëûÙFZȾ"‰˜~¦( #ÓÓIZ‡e¬!22&tZObÂà6I!„(-\ä‹B!ÎGŠ¢xXj'Fˆ¾"?]€&»âÓ¥¸Ýžv×uŠŠ**+«;l §x˜+÷apÔöe¨BÑ¥@4Ý]¿~=Ó¦M£  Àoý|ÀUW]ECCƒw]NN×]wï¾û®_ÙŽÖŸeË–ñòË/Ÿõö.—‹)S¦PXXØuáêmlB!„hŸtGýEZÄô³];÷ðé§ëPU•°°Pn]~‰‰ñÞÇUUå­7?äèÑæi­GŽÎ-·^ç—• .ÛÃàu÷bl*G7š©œþõ£nê÷cB_½ùÐ2gÎV¯^ÍŠ+øÓŸþ4ºüì³Ïòøãc³Ù8pàüã)**¢´´Ô»mGë{#33“Ñ£Gw]pœË±µç¹çž£°°ÿþïÿèP„BˆNIFôIÄô£&»Ý›„¨¯oäïÿ÷Üs‡·ÌÎßx“0GŽä³sç.»l’w]̦_bl*@Q]Älz’Æ¡óÑ,ýt$Bx>ú(7Ýt¹¹¹Ìž=›ÿû¿ÿc„ Ì™3€O>ù„9sæpÝu×ñ“ŸüÄ»]Gë{ã¾ûî H=}á\ŽM!ÄÅe_±‹ ‡|SàâD¥›š& - ¹ ƒ‘!F†Å1!Å̬t ãerq~“DL?:vô¤7 Ó¢ät™ßý½{´ÙnÏžý~‰s¥Eua®9Š#>#€Ñ !DÿJHHàž{îá÷¿ÿ=ÁÁÁdggûu3zôÑGÛÝ®£õ¾~ñ‹_ i¿ùÍo€æ®CÓ¦Mcùòåüô§? ©©‰¬¬,V­ZÅc=Æ 7ÜÀ5×\ÀwÜAff&[¶láСC$%%ñÈ#0qâD ¹5ã_ÿúW>ÿüsTUeÆŒ~û×4W^y…Õ«WS]]Í„ xä‘GHLLì—Øž{î9>ÿüst]'++‹¯¾úŠgŸ}–ääd¿87oÞÌ_ÿúWòóó‰eîܹÜÿý<öØcX­Vþó?ÿÓ[ö•W^aÏž=<õÔSn÷ꫯòâ‹/ðÅ_pýõ×óè£âv»ùË_þºuëp:dffòÐCâ=¦Ù³g“——Ç‘#G2d=ö{öìá£>âôéÓL™2…_üâDEEuùü !„¬MG¼–×À®SÎÖªûýiYÐt¨jðPÕ ²ë¤ƒ¿mªcò ·_acúK»5 q®“1búQxX(ªÇ?corøÝ×tÖtÕ¢«mÊ ·?ÞŒBœOn»í6l6÷ß?÷Þ{/ƒfPòY³f±}ûvo“ã;vÍãʴصkÉÉÉ$%%µÙ¾¦¦†¿üå/<øàƒ|øá‡Œ?Þ›PxöÙgÙ¼y3O=õÏ?ÿù$lذ¡Ocs:¼÷Þ{Ææ«¼¼·ÛÍŒ3'--±cÇ0}útìv;ûöí ªªŠC‡1kÖ¬N·kOcc#}ô?ûÙÏˆŽŽ&..ŽýèG~‰§–c;v,ÑÑÑÜ~ûíüà?`È! 2„¥K—²{÷î÷#„"°ê?z­‚v5°VýÌ¿3 Meñ„Pþ÷¦A¬~0™-¿Ê–_ eõƒÉüïMƒXÂÈ×Ä0&ÑÌŠÏ*Ð1²ë”ƒß®©æçW˸aâü -b„覂‚Ö¯_Ïĉ¹å–[¸ýöÛ™6m¡¡¡yyyÔÔÔ tBôÊgŸ}Æáǹï¾û°ÙlüÛ¿ýÏ>ûlÀ¦¤ž5k_ý56l`æÌ™Ì˜1ƒƒ²víZ.¿ürL¦žÿ>‘’ÒÜjñ믿îö㚦±ÿ~FŒѧ±µ ÆÛQlíÉÈÈà—¿ü%/½ô¹¹¹”•5*?}útŠŠŠ8~ü8_ý5³fÍêÖv€w¼h”944”ÜÜÜBˆþ·é¨£oº#é:h=KÂøZvi/Œ=Ó2Fçƒ]l:bïzC!Î’ˆégE…§yþùWùÍ?Í;o}HCCÛ7µ_má©ßÿ™§~ÿg6nÚÚ½ŠeÎû>¥i›6mbîܹ$$$`00 4謾ZYY.—k Ãâ¬ÕÕÕñ‡?üŸüä'Øl6æÏŸÏĉ½³ õVBB‰‰‰¬\¹Ò›ì°ÙlLš4‰§Ÿ~ºÃ1XºÂâÅ‹ùŸÿùöíÛGEEÿ÷ÿç÷ø5×\Ãoû[öïßOUU¿ÿýŽfêÔ©›¯ºº:>ùäÊÊÊp8ìܹ«ÕJdd$ÐÜ‚gæÌ™¬X±‚É“'{Ÿ§®¶œïWfdz·ù ê;ì…tZw?5é?P§|—àh²»6ík —ËÅ;ï¼Ã¢E‹ˆŽŽæäÉ“|õÕWÜzë­FžþyfÏžMzz:ƒ—ËÅ[o½ÅâÅ‹‰‰‰¡  €5kÖðÃþ°M½•{þùç¹ù曉ŒŒäèÑ£lÛ¶åË—w+ž[n¹…ˆˆ8À† X¾|9aaaìÝ»—cÇŽqíµ×b·Ûyÿý÷¹æškç믿¦ººÚ;ý*4.ùí·ß²hÑ¢vϦi444ŽÓédÕªUÌ™3‡Áƒó /pÏ=÷àñxxûí·Y°`±±±8‚ƒƒq8&bZ¶ïlü1W\qqqq=~ž.D555 :t Ã¸ µ¼‡¶Œ}âñx¨¯¯÷&IŹ«²²’ °iÓ&¿$Kwœ:uŠeË–ñÅ_x[Ä!„¸p=—SÇß6ծ–é©5K&ØxâÚ¸€TûäGe¬þ¦Å`â®ÜwåÙAVXXHXX&“ £Ñèý¬,ã’õ-³Ù<¨TÀÓê¯h­–uŸe|îûÞðyŸuz;ëZ/w$`I„ ó[Ø9JSUZ'€ššüû1VVÕ¶Ù®º²Ú‡ÿÓ¦iàŽ (;VZZJDD„·UÈСC ¥ªªÊ[fôèÑÞ7¬’’¢¢¢ˆ‰‰šgòhïCWåEñ6qOKKóάÑU<Š¢x‚1bf³Ù;HdZZuuuÞý755±qãFÖ¬YéS§ÚŒ·JmmÛ禅Á`Àãñ°sçN¶lÙBSSS›@JJJ°ÙlÄÆÆ`±Xzô¦Þ}tç¼€ÿó$„¸¸:tˆäää'arrr¸ì²Ë$ #„‰o Ùõý»Ö0h*3Gîÿ’™£l © k|SàlóKˆstMêGi#†ÑÔh'$ÔŠ¢(xT•A­ºº\15ƒ÷Þùk¨hNÔ\¾xŠ_™BóRÝÛ05'aNV†£ Üçñ«ªÚ惻Ûíî0S¬iZ·>èw·\Ë>ZöÓU<¾Z¯k=sI|||›.¾"##q¹\¶û‹yy9¹¹¹Ìœ9“èèhjjjü§l‰Íb±´[w¦èíÎ> çÏ“âÂvâÄ Nž461]×Pt2n¢8÷ÉOâýÈl6sß¿þ3Š®PQVÍ èhþùžÛüÊL¹t"3g_A]M=u5õÌž=K/èWÆ´üi²Ø{<„ojÇáù§—Q‚ú¾d||<¥¥¥Þ1WNŸ>¦iDEµ?M\||<%%%”——PQQáPVÓ4vïÞÓéì´\ ãéH\\uuuœ8qhþ¢e:Ú–M&Ó¦M#;;›'N iº®SUU…Ç㡺ºšàà` „ªª”””`40x<âââ())¡ºº¹…“ÇãA×u, n·›’’ ¹åL}ýwM@[¶ïl‹Å»M‚Š& IDAT Î‹âÂP__ÏK/½Ä‚ x衇X¼xq›1¨º£  €Ã‡3{öì>ˆR!Ũ¦©ë {JG]cP˜1`u 36;ƒÖ'1 hÒ"¦éºî×!uø~ùëG:Ýfñ’ù,^2¿ÃÇ á±„ÿè¯î³/X,æÌ™Cnn.ªªb³ÙX°`A‡]\, YYYdggc0ˆõÎ0äp8سgÉÉÉÄÆÆvX.ñt$((ˆ… ²iÓ&vîÜIPPãÇ'>>Þcpp0ééé„„„°k×.6lØ€¢(DEE1{ölRSS)((àí·ßÆb±ïcüøñ|ôÑG,X°€Y³f±nÝ:‚‚‚°X,Ìž=›fϞͺuë¼3øܲýœ9s:ÜÇĉÙ¸q#àꫯÈyB\.¹ä^yå•^ד’’¶mÛ‘Bˆ‹×w-b^ó™1 ·ù&ĹFëíC¥¥¥аXÛïŽÒWìv:†€ÖÛ[¬Y³†›nº) å„èˆ ÖÛ÷d°^!„â·àéÓT5(i¢kÍõªn4·“5Œ">"0íJj=\ý»C‚‚‰ 泇’ÎêGH¬w`È`½"àŠŠ‹û}ŸÅ°ÏŽ466âñx8pàÆ ëU9!„B!DÿÔguï/ܴؾu íØ…éšÔ‡ ee¥„‡…a0ú<“ªë:šªQZZJRò>ÝWw8q‚ýû÷0xð`¦M›Ö«rB!„Bˆþ1!ÅÌ®SJ˜(~‹¹jÉšsÔz«ÿ^JÏg¢¿I"¦Y,<ª†ÝaçôéÓ~°ö…°°0P5 «ÕÚ§ûê®qãÆ1nܸ€•B!„BôYéþ¶)ßaPÅÀ'ÛJ¸wN\¯»'•Ôzød[ † +( ³Ò-Ò•Hœó¤kR²Ùl$$$QQY…ªª}¾?UU©¨¬"11™ÐÐÀd—…B!„§q‰f& ìì¬ P  yî‹’^×÷Ü% A10iˆ•qœ[ˆ¾"-bú¢(L˜0£GrúôiCßöW &!!#FHXqQûÓŸþă>8Ða!„ç½Û¯°¦{’ ú™1ŠÁÄÇÛJ›ÊÍS£ÎªÊw¶Tóñ¶R & ŠbàŸ®“ïAâ¼ ‰˜>f0HOO'==} CBчjjj¼SÛ/Y²¤ÃuB!Äùdú ×Oåƒ]½¬éL‚D1€Áˆb4¢è&þgÕ`d“1ïl©æVA F1¹vr8ÓGXQE’1âœ'‰!„½ 60~üx¢££ÏjûÍ›7sìØ1 „ÛíîpBq>úùÂHNTxzß2æL«˜ædŒ ƒAC3jüfÕaö&pï¼Ä.ÇŒ)©õðܺb>ÚzƒÑŒÁĤ¡¡Ê+àÚ©ÉÌÍØ$+ƒÂš¿®–×{Ø_d'w_m)D1a0™QŒf&³ñ¿7 Â`0HkqÞDŒBˆ§ë:6làØ±cFRRRÈÊÊ ´´”ÜÜ\±X,dee1xð`ÊËËÉÉÉ¡±±‘-Zä7X¹ÓédÕªU\~ù夥¥qêÔ)6lØ€Óé$&&†yóæqàÀŠ‹‹yûí·IKKcüøñ¬[·®MŒ3gΤ®®Žºº:æÍ›‡ªª¼õÖ[dee‘˜˜Ø¦|lll-!„¢ÿ…Y üõöX~ûYMïº))Íöêœiè(hŠT#m+á£-E躺~f›æqe0QL£ ƒ!ˆk2"xôêXŒF£$`ÄyE1B!ÜÉ“'9}ú4wÝuŠ¢àñxp¹\|òÉ'\wÝuÄÆÆ’ŸŸÏêÕ«ùþ÷¿®ë|òÉ',Y²„¸¸8ìv;‹Å[§Çãáã?fÒ¤I¤¥¥ÑÔÔÄÚµkY¶llÛ¶7rÕUW‘ŸŸÏ¬Y³ˆàž{îi7N]×y÷Ýw9~ü8Œ5ªÝ$ŒBq¡úùÂHfŽ´ðZ^ÃY¶ŽQ@Ñ›î5Q@Q0htň®™@WÑ5 нÛ(†æ™–ƒ‘‰CC¹íŠf޲a0¤5Œ8ïH"F!Ä€‹ŠŠ¢¡¡/¿ü’´´4† @qq1QQQÞÖ%ÇgÛ¶mTVVât:±ÙlÄÅÅ`µZ½õéºÎG}Dbb"cÆŒñÖÕØØÈ—_~ 4'yTUíQœŠ¢°`Áþö·¿Ç­·ÞÚëcB!Î7ÓGX˜>¾b;ø¦ÀʼnJ75MšÞõögšÅ :FCó¸1Šbln £©èè 7w[Š10$&˜ï¥X˜™Âød+F£Ñ/#Iq>‘DŒBˆÁ]wÝE~~>ûöícãÆ,_¾MÓ0›Í~e].ƒ—Ëå—|ñ¥( ©©©8p€Ë.» ³ÙLpp0‰‰‰\{íµÆrüøñ»&3Æ4ƒBq±—hf\¢¹ë‚ÐÏt=ÒuMÓÐ4Í»¬ëº÷ñ–DKKâÅ·LËãBœO$#„bÀ9N<#GŽdذa¼ð 8NX·n%%%ÄÇÇSTT„®ëÄÄÄ`µZY·nUUUDGGãv»1™LÞcÔÕÕ±fÍ–.]J||<µµµäçç3|øpt]Çãñ„Õj¥®®ŽøøxRSS;ìš°víZ–,YÂþýûÙ»w/—\rI&!„â‚¢( º®û%WZ0-Iß²¾-_$ #Îg’ˆB1પªÈËË£¡¡UU™:uªw¼—… òÅ_ ª*6›%K–`0°ÙlÌ;—O?ýÔ›L™;w®ß`½™™™¬^½š/¿ü’9sæpÍ5ד“Ö-[0›ÍL˜0‘#G’‘‘ANN{÷îåºë®ëpúËíÛ·BZZ‰‰‰¼õÖ[$%%õ´×B!ÄÅ®u"¥å~{‰˜Îî q> ôÕÛú”.–}×|Öµ¾µ<Þr¿eÙØjÙÔêoXEEÅ–Ö/l!Ä…£¦¦†¡C‡t´–÷PMÓPUÇC}}=ÉÉÉ™B!.]%búBaa!aaa˜L&ï4ýµï‹™Ùlž Ô*àiõW´V˺Ï2>÷}oø<ŽÏ:½u­—;°$‚´ˆB!„BqN‘䇸µßöZ!„B!„Bœ$b„B!„B!ú‰$b„B!„B!ú‰$b„B!„B!ú‰ ÖÛGt]o3ÒwSE¹B!„B!Î!’ˆ 0ǃÝn§©Ê‰Ç¥X2FQLf#!ÑÁX­VL&yª…B!„Bˆ&ßÎÈn·sðË]U»^ëzƒ~f`ă9«Õ:Ðá!„B!„5#&@TU¥èp)_/?g’0îzƒ¯•Qt¸UU:!„B!„â¢&‰˜q:”ì©A÷ ì¸0íÑ=:%{jp:ŠB!„BqQ“®I¢i •F‡*Ñ´s§¥ŽâÂTUU5Ð!!„BqN“DLË]Û† X»v-ÇŽ£©©‰¤¤$-ZÄâÅ‹»Üö¾ûîcÉ’%,\¸0 1µp»Ý,\¸W_}•ÄÄÄ>Ù‡¢}ÑÑÑ‚B!ÄYijjèÄEB1¢ë:F£ð t(í2›ÁiÅŠ|óÍ7Üyçüð‡?ÄívsäÈl6[@êB!„B!.T’ˆ UU ±REý@‡Ò.«ÕV1ÙÙÙìÞ½›•+Wâ]Ÿ––Ö뺅B!„Bˆ $bDUU\4¨çfs¶Æ† €$b^}õUî¼óN¿$Œ/ÇÃÊ•+Ù²e  4ˆÛn»yóæuX§Çãᥗ^"''—ËÅôéÓùÑ~änû¾ûîcÆŒìØ±ƒ£G’À<ÀøñãæsÿòË/“¦i\vÙe=Šç¾ûîcÙ²e¬]»–}ûöñÄO‘‘Ñës%„B!„B´&‰˜Ñu·Éƒmtð@‡Ò.‡ÁÙë®IN§“¢¢"ÆŒÓa“ÉDRRO>ù$ÁÁÁäää°bÅ FMJJJ»Û<ûì³ÔÖÖòç?ÿÇÊ+X¹r%>ø uuu¼ôÒK<óÌ3$$$ðòË/ó«_ýŠ7ß|“ÉÄ‹/¾È®]»øÕ¯~…ÅbáÕW_íq<ÿõ_ÿÅücî¾ûn’““{už„B!„BˆŽH"&@ C&Ç0ká¥J»>ÿ$ƒ¡w³•£ë:‘‘‘–[ºt©wùÖ[oå³Ï>ãàÁƒí&bšššX³f o¾ù&QQQ|ÿûßçÉ'Ÿô&bÂÃÃY¾|¹7tË-·ð÷¿ÿÂÂBùè£xú駽ݣ~úÓŸ²~ýúųpáB–,YÒÓS"„B!„Bôˆ$bHQz—èèKEéu-³¡3jÔ¨ËÕÖÖ²~ýz¾ýö[(..Æét¶[¶°°MÓøñŒr&FÇÓfÄrÅ'þøøx, v»ââb4McäÈ‘ÞÇ['œºÏرc»q„B!„BˆÞ‘DLÀõ>áq®Šˆˆ **Š;vt˜ˆq8<ðÀÌœ9“;¸¸8zè!4Mk·|hh(Ï=÷áááÝŽÅ7i£iªªb2µ½œ{B!„BÑ—ÎÝ&ç#å»›bP0šLM&ƒâ]¯ë:.·—ÛŽÞo땺ñÆyçw8}út»>|˜ÚÚZþå_þ…aƱcÇ(//o·üàÁƒ !//ï¬âILL`ïÞ½Þu¾cáô4!„B!„¢/I"&ÀZrƒ]ÓÐ5 ƒÁà]¯j»vnc×®í¨ªÖoëå†n`äÈ‘Ü{ï½|üñÇœ8q‚ÂÂB²³³ÉËË#**ŠÆÆFV¯^M]]¹¹¹@sÂ¥EDD%%%躎Édâæ›ofåÊ•ìܹUU)//çðáÃÝŠ'$$„ùóçóôÓOsðàAªªªxá…¼w'!„ÿŸ½ûŽªÊ?þ™’Iï!¤I-H )Š¢(°‹Š²î*ºÊ³lø¸º¿çqUpÕõY¬HSŠ $¡$ Dé-RHH$“™¹¿?BÆLzÈ„~ß:¯Ü9sï¹ß{'æ›s¾G!„B\+25ɦj¥=@UkûJ»ZÞÞ>W¶U׬ÝVé­VË‚ X»v-ñññ,_¾µZM—.]˜4iÁÁÁüå/aÅŠ,_¾œÁƒ3jÔ(«>î½÷^Þ{ï=RSSyýõ×™1c:Ž>ø€ÜÜ\<==™>}:-Šé©§žbñâżòÊ+¸¹¹qÛm·áççТx„B!„BˆkÅÖMZÒŸª™íÚmêZmu5¯[¡\ùª©³­­óÕõÒ¥KÉm]ʹ®‚‚2N\"fBÔoÁ_IĘ뜫¦>IÝ¢²íÙ¾uã"ú†Z î q3+,,¤K—.ÆM­æghM&£ÑHII‰,ÿ.„BˆVff&®®®hµZ4åó”Ê ŸˆÆétºa@ `Œu¾*€¹Î¶Rk›ZÏk?¨õ:µÚ”Úên7ÆfI™šdkµREfÌuë´¨@­Q£Ö¨¯m»B\Çž}öYžyæ™zío¼ñQQQõVRKOOgÈ!·é¼3gÎdýúõmê£)ƒ¨¨(233ÛÔÏ´iÓøôÓO;<ކ´56!„BˆßIÄØPuÎãzýO!®_Ç'%%¥ÞŠf{÷î 99ÙªýÀôêÕ«U«­ÝÈâââèÙ³gG‡Ñ ë9¶†,Y²„yóæutB!„ø“1B!:ÜðáÃyóÍ79uê”åCýùóç1 Üu×]ìÚµ‹Ñ£G[ö?pàÇï¨p¯¹'žx¢£ChÔõ›Bˆöuô‚ÄSüœa 5¿ŠB½³M+@(¨Uàᤡ«·ý‚uÄD8Ð'@gË“qÍI"Æ–Ú0 ¨à|1§.Ð=.¯®®¶‹ dz’âºHHH´$b’’’9r$qqqüÏÿüæ+«Ð)ŠÂ˜6mUUU,\¸]»v‘››KçÎùóŸÿÌí·ßÀK/½„££#¯¾úªå\+V¬àÈ‘#¼óÎ;V14×TOeŠ‹‹#99™“'OÈóÏ?Oÿþý0™L,]º”-[¶`2™-þÊ+¯`6›yã7€ê©C#FŒ`ÆŒ–)Zz½žÑ£G³fÍ^zé%î½÷^&Ožl“8Ìf3+V¬`ãÆ\¾|™~ýúñüóÏpMb[²d [¶lAQFÍ®]»X´hQ½C{÷îeéÒ¥œ;wÆŽË“O>ÙìûÚØq+W®dÙ²elß¾)S¦ð /PUUÅâŋٶm•••ÄÅÅñôÓOãääd¹¦ØØX’’’8}ú4!!!¼ôÒK9r„uëÖqñâE¢¢¢xå•Wðôôlð=Bˆ›Éž3|–TJJz¥ {U¬¾Ôl˜((5RPj"%­‚Oö30ć»02ÜÁ†çâÚ‘©IíHQ* \·=ý@._ÿ5‘ƒ«Oqpõ)¾~"Œ”¼V÷Ó\»B\φ ÆÁƒ-Ï÷ìÙÃÈ‘#:t(z½žcÇŽpîÜ9*++éÛ·/vvv³`Á¾úê+î¼óN^{í5ÒÒÒ7n»wï¶ú™˜Àرc뿹¾ ºôâÅ‹™3gk×®%22ÒòA`Ñ¢EìÝ»—wÞy‡?üòòò¯5&&†Ÿ~úÉ׈·ì“’’BPPõŽok}ô?þø#o¿ý6«V­B§Ó1{ölªªªÚ=¶… ’””Ä¿þõ/–.]JaaaƒµkŠ‹‹™;w.wÝu›6mâwÞ±ŒŠjê}m긙3gòÈ#0~üxöíÛÇ /¼ÀüùóÉÊÊbåÊ•üç?ÿ!++‹… Z]Ó’%Kxæ™gX»v-!!!Ìœ9“ŒŒ Þ~ûm>ûì3233ùàƒê]‡BÜlÞÜ\ÈÓ_æÛ0 £€¢\)±ª (fÅTýÕ|åQ« E!%­‚§¿¸Ä››/Û(!®-IÄØÔoÕqMFéé餧§c2›lß·ü8&ãouLF3ÉËŽ·ºŸ¦ÚeHŒâzW»NLEEGŽaèСØÛÛ3tèPvíÚÀO?ýÄàÁƒÑh4L:•°°0™5k=z€‘#GR^^ny^PPÀÉ“'‰‰‰i0†¦úððð`Þ¼yDFFâååÅÃ?L~~> ¾úê+æÍ›GDDÁÁÁÖ"1b%%%œ9s¨ùñ׿þ•ÂÂBÎ;À¾}ûQÓ–8 «V­âå—_&<<œÀÀ@^ýuÊÊÊHLLlר*++ùúë¯[tòòò¨ªªbÔ¨Q¸¹¹FïÞ½›}_›:®!eee¬[·Žçž{///|}}™={¶Uâ©æšz÷î——>ø <ò!!!„„„p×]wqøðáFÏ#„7º’ 3³?»Ä·)e6ìU¹òÿ•ŒÙĤ~μ5µç‘üJ’_éÂÆ9A¼5µ“ú9£˜¯$iPøö`³?Ë£¤ÂÜü©„¸ŽÈÔ$«Iw˜Íf23Ò–ÝP{q¶¾^?ÅÙzT­ì§©v!„¸ÞEEEQYYÉ©S§ÈËË£W¯^¸ºVOÓŒåË/¿äñǯW¦°°Í›7søðaJJJÈÌ̤¢¢{{{bbbصk‘‘‘$&&2tèPœŒ¡©¾jÔ,e €££#z½žÌÌLL&“UáÚÚûÖæââÂÀùé§ŸèÞ½;{öìáý÷ßçäÉ“ìÚµ‹ÐÐPöíÛÇܹs½_WGVVF£ÑêuGGGúöíKjj*cÆŒi·Ø²²²Z|ºuëFTTÓ¦M#::šÉ“'3dÈ é÷µ©ã’––†Ùlæ‘G±,Oj4)+³þ Q;ÎÐÐP zŠ–———%Þº«{ !ÄÍdî×¶ŸŠT3’_13©Ÿ+Åyà箩·§Ÿ»?w'F÷tâ±X>Œ/仟KPTjRÒ*˜ûU>Kgv²alB´/ckWŸh´úõ@¿~ý«kÛD{ç^^õºñëíÙê~šjBˆë££#ýû÷çàÁƒìÝ»×jÄEtt4§OŸæâÅ‹œXêÃÔðôô¤oß¾,[¶ Km’ãÇSXXÈœ9s ÅÉɉS§N‘““c9väÈ‘deeqþüy:Ôè´¤–ôÕ”àà`:Ô¢ýcbb8t艉‰DGG0jÔ(Nœ8ÁÖ­[:t(ZmëÇ56GC¯›ÍfŽ;Fxxx»ÆVSŒ·¥÷`РA¼öÚk,_¾œ„„rssæßׯŽ,õjüýýqvv&!!¡Õ×#„¿{ÎT´Ït$E³‰¹}˜6¸õ •LìÊ܉>`®NÆ|›RÆžÓ ×fâz#‰1›Í¸y6<Ô½9.LÿðVîž?Š»çâÞŠ{ÀÕõÕOo×ÿ–VØÖG}d³¾L&Ÿ|ò‰Íúâz3lØ0víÚEUUaaaV¯ÅÆÆ²nÝ:Ëh///JKKùæ›o(**bûöí@õt˜:ŽèèhæÏŸÏÀqq©•øöð ++ EQZÔWSœœœ˜4iÿüç?9zô(—.]âý÷ßotøøã-É À{ï½×h –¶ÆáääÄäÉ“yóÍ79vì,X°///Ë½í¨Øj+..fÆ äææRQQÁÁƒqttÄÃÃhü}mî¸Î;sèÐ!.^¼Hyy9Z­–™3g²páBöíÛ‡Éd"''ÇRZ!~ï>K*µm‡ WŠîš˜Ôß媒05¦ veR—+#c̬´u¬B´IÄØˆ¢(èt«Ò¸­yØÙkêïCP´mè§±‡½½NVR²üü|6oÞÌêÕ«ùôÓOY¿~=EEE–7ˆˆ z4C]±±±VõaºvíÊœ9søðùçž{ˆçÖ[o­wì¸qãØ¿½iI3fÌ`Ë–-Ì;·Å}5åùçŸ'**ЧŸ~šÙ³gãëëÛd"'&&†²²2ËÒ΀圵¯³µš‹cîܹŒ1‚çž{Ž?üá”””°páB«é5×*6www ~­˜’’vìØÁ<À˜1cX·no½õ–eú4ü¾6wÜwÜÁ-·ÜÂôéÓyùå—øÓŸþÄC=Ä‚ ˆ‹‹ãÑGåĉW}Bq³8zÁÐKTWׄQÌ&‹«_¢¡µ‹óB1›@1s(½‚_³l¯íÃÖš[ÒŸª™íÚmêZmu5¯×<¯ÙÖÔÙÖÖùêzéÒ¥d['%òòò0êÍôгù;ÀÏÆÁÅ‘N¤ˆÕÕÊÈÈ ))‰èèh:w(àééÙäý>úˆG}Ô&1˜L&V®\ɬY³lÒßͪ°°.]ºtt7µšŸ¡5µFŒF#%%%–©'×›ôôt¦M›ÆöíÛ­FÄˆŽ—ŸŸÏ„ سgU’¥%ä}Bˆöµ$¾˜Oö”خÚå©ÍFîìçÂßïöµI·¯¯ËeãÏ¥¨ÔZfrç‰[ݯªŸÌÌL\]]Ñjµh4Ë/ ¤XûÒétÀÀë|Usm¥Ö6µž×~Pëujµ) ´ÕÝnŒÍ’2"Ʀl=ŽÅÖqµÌf3{öìaìØ±øûû£V«Ñh4têÔéªê$!®­øøx† "Ö¯C'Ož$((¨ÕI÷U!ÚÛÏööÛhÌ&¢{Øîgwt¸2*æçŒJ™ ®{ò ²½( Cõ.N5YÔ«h·rµí6’——ÇÞ½{)++ÃÁÁèèhË(›Õ«WÎÉ“':t(\¼x‘½{÷RUU…§§'¹¹¹<øàƒõúmj¿eË–JNNŠ¢mù­{Sñ,[¶ŒnݺY 4<˜óçÏ“››‹V«%.._ßê,|ff&ÉÉÉTVVâééI\\NNN–øŠŠŠÐh4–eJë*++#>>žË—/c2™èÑ£‡U‹§©kÌÎÎfïÞ½ ÜÝÝ-E&›:gCï…¿gäp¾ë IDAT?üð÷Þ{oG‡!€ÔÔTÒÒÒ4hùùù,Z´¨Á¿ZBÞW!„h_©ùUÍïÔR5z¯ŒŠé`o³®{Ø£(fTŠBê%[&„h’ˆ±±š¼Ge¥C‡0°ÿ töWÕ®(`¾’\Q«TVù–Ö´Û‚Á``Ë–-ÜqÇxyy‘––ÆÖ­[ùãÿˆF£¡¤¤777î¿ÿ~Ôj5ƒ~øI“&áííMFF©©© öÛÔ~F£‘àááÁ™3gHLLdÆŒÍÆc44hîîî?~œíÛ·3cÆ \]]ùå—_Ø»w/wß}7åååìܹ“É“'ãææÆ¡C‡HNNfôèÑ–Š‹‹­3u9::››•••¬Y³†nݺѹsgË>M§©küᇸãŽ;,÷&==½ÙsÖ}/„ø=ËÈÈàÔ©S–3¢c•””°|ùræÍ›‡¯¯/÷ÝwS¦Liu?ò¾ !Dû+ÔÛ~±3(f:¹ÚnU×N®šêº3˜Û%f!lM16§jäÙÕ¶×Vwµím—““ƒ»»»eTH—.]HII¡  À2 ¥gÏßjädggãé鉷·7P½òHCCÏ›ÛO¥RYV» cçÎ-ŠG¥RYŠ@†‡‡“œœŒ«««¥ŸšåS³³³ÑëõìÞ½¨^ÖÔd2YÅèììÜdQ^µZÑhäàÁƒ”––¢×ë)+³^毩ó4vÙÙÙxxx4xoš;gí÷Bˆß³àà`öïßßÑaˆ+úöíËŠ+Úܼ¯Bq#úmDŒÍ{¾2"E‘º.âº&‰ª=òÀÞÞžý«WýÐÙÛ_u»J¥ú­bq­&­ooû¨“ÉT/‘RUUÕh+³ÙÜ¢9ÿ-ݯæ5çi.žÚê¶Õ~®ÓéðóóãöÛooô¼ 233,Fš——GBBÑÑÑxyyQXXh™BÔšóԽƦîMS甿x„B!D[y8©)(³UÒD±ÚÌ+1âçn›£y%FK÷Ž2\\ÿä»ÔFT*e%eµÐ98 sp°®Órí*µ•ZݦöÒ’Ò68÷óó#''ÇRsåâÅ‹˜Íf<==Ý?;;›¼¼<.]ºd©ƒc6›9|ø0•••MîgËxãëëKqq±e:”¢(TUUYŨÕj1b;vì 55³ÙlY5Éh4rùòeìííéÔ©&“‰ììl4šêá–5Ó¤;Os×ØØ½iêœB!„B´UWo»vëûØÛ-3]»¯.í³¶"#blD­V“•~‘Afóu÷aØl6‘žšŽo`Û–®vpp`̘1$$$`2™pqqa„ Ö qpp`ôèÑìØ±µZe…¡ŠŠ Ž9BPP>>>îgËxcggÇĉÙ³gÄÎÎŽÈÈHüüü,1ÚÛÛ““)))$&&¢R©ðôô$66–nݺ‘‘‘Á_|ƒƒ~~~–8"##Y·n&Lhð<¡¡¡M^cí{ãëëkY¤©s !„BÑVý‚u¤¤Û*a¢²ÚL8^Äè^Î6é9áx‘¥û[‚[¿ Ÿך­ç/´¤?U3ÛµÛÔµÚZ‹Y]ëyͶ¦Î¶¶ÎW×K—.%ÛzI³ÂÂB~Úq„1“‡ãêæŽF­±ùŠE­¦(((èËJYóùFâÆG[êt„²²26mÚÄÔ©Sm²Ÿ),,¤K—.ÆM­æg¨ÙlÆd2a4)))ipêžB!nLG/˜õIžm:»RF1W¡ ˜«ÊÙüÒ-mžž”]ddâ? ¶sD¥Õ±üOþô r¼ªÙ™™™¸ºº¢ÕjÑh4–`¶¥Óé†%€ 0Öùªæ:ÛJ­mj=¯ý ÖëÔjSh«»Ý›%dDŒØÛÛSV¡ÇPQE¡)ŸËù¾ý©2©¬4`oo»%âZª¬¬ {{{´Z-ǧk×®mÚO!„Bqmô Ð10ÄÞ†£b@…E¥•†%Û³yýÞ¶ýgÉölPi@¥f@ˆ#}l¸,¶íEæ1؈££#a‘ìþO†âŽŽæ7e— |ýÁôÐGGÇk~þÔÔTÖ®]Ë×_^¯gÀ€mÚO!ZâßÿþwG‡Ðj¶ŒÙd2±dÉ›õ'„â÷ëÁá.¶éHued‰J…J¥F¥Ö²~_&_¾ê.¿L¾Ìúý9¨ÔZT*5 w•Ñ+↠#bl¨wŸÞd¦í`çÇ*ró.p©üB‡Æãj玓»#ÞQлw¯‰¡OŸ>ôéÓÇfû !„B!®‘áLèÌ·)eÍïܤ+ •ÔT *EË?לº3}XëÜø2ù2ÿ\s•=*†»º12ÜÑjR!®W’ˆ±!FÃØ qœ =…{áJH‡Æ£R©ðöö¦{÷î×]a!„¸ž$&&‰——WG‡"„B\w^œèAê%cÛ§(©@…êJ2F‹ZmƬ1óÆšSËôçñqÍÖŒÉ.2²dÛÖí»ˆZ£C­¶c@g^¸ÝK®7 IÄØ˜ŒìBˆLvv6†BqÝš?Õ‹¹_´1óÛ¨•Z;T(¨U°~_6ë’2¸{X±}¼èèH'×ê«y%FŽe•“p´€uÉ™¨Ôv¨µ:Tý»ºðÖÔN¨Õj #n’ˆBÑáE!11‘³gÏ¢ÑhfôèÑäää@YY™eI÷Î;——G||>|Ø’ˆ9yò$·Ýv›Õ9<ÖßߣÑÈ!CðôôääÉ“üøãÌš5‹ÊÊJ¾ûî;¦L™‚iiiœ?¾=Þ*!„¿s/Nô º»Ÿ%•^åè¨T¨PÔT*@¥BmV£¨4(f-(&sÍ*ÅÕǨÔÕ+-©ÔúwqæþáîD÷pA­VËhqÑDŒBˆçééIii);wî$,,Ìj”‡§§'>>>„††²ÿ~òó󩬬ÄÅÅ___«•áEaݺuЫW/K_eeeìܹ¨Nò˜L¦VÅÊŽ;0œ9s†ÁƒsðàAòóóÉÏÏ'44µZÑhdß¾}”””PVVFii)aaaüøãTTTXF¬Ô­KÓØ±5¯yzV3Œˆˆ`ëÖ­\¼x///Ë} ÂÞ^–ïBÑ>F†;02Ü£ $žªàç ©ùUê͘•æ¿2,  A¥®®£RiªG˜M(( TO[rwRâmÏ-ÁDG8äˆF£±JÀHFÜH$#„¢Ã¹»»3kÖ,Î;ÇÑ£GÙ½{73fÌÀl6£Óé¬ö5 ¨Õj ƒUò¥6•JE·nÝ8~ü8C† A§ÓaooO@@wß}w“±œ?¾Ñ©I½zõ"$$„ÌÌLÒÒÒ}š¢¢"z÷î TO§Ú¶mcÆŒÁÛÛ›‚‚KÜœ={–ŠŠ zöìYï<ÛÐ5Öü£³¡û$„B´·>:ú\ýß?Ê•©GŠ¢`6›1›Í–mEQ,¯×üW“x©= ¦æu!n$RVZ!D‡«¬¬¤¢¢‚îÝ»3nÜ8 ©¬¬Äßߟ‹/’ @VVŠ¢àíퟟYYYPUUeùÀ Aƒ dÓ¦M˜Ífüüü(**âܹs@õ?úªªª€êÑ4ÅÅÅtëÖG}´Þ£fdMDD‡ÂÝÝ­VKDD§OŸ&;;›   òóóqtt¤sçΘL&.\¸`Y½®wïÞœ>}šÓ§OÓ£GK¼5#aš:¶1þþþ\¸pœœrss©¬lãÊB!D;«HQ«ÕhµZ´Z-vvvØÙÙ¡ÓéÐét–ç5¯KFÜèdDŒBˆWPP@RR¥¥¥˜L&† f©÷2qâD¶oߎÉdÂÅÅ…;ï¼µZ‹‹ cÇŽåûï¿ÇÎÎGGGÆŽkU¬7..Ž7²sçNÆŒÃäÉ“‰'99NG¿~ýèÞ½;ƒ ">>ž_~ù…{î¹§Éå/»víÊwß}ǤI“prrB¥RáããcùÇ`xx8iii|úé§8::hI¦øøøPZZŠ›››Õˆžþýûóå—_2qâÄFmŒ££#ãÇgëÖ­¨Õj:w«ëÕ½B!Ä5T7‘Ró¼ö/WšÚOˆ‘­¿{[ÒŸª™íÚmêZmu5¯×<¯ÙÖÔÙÖÖùêzéҥ亰…7ÂÂBºtéÒÑaÜÔj~†šÍfL&F£‘’’ˈÑ´M›6AxxxG‡"„B\—šKÄ´‡ÌÌL\]]Ñjµ–4×êÜ¿g:nP˜c¯ `®³­ÔÚ¦ÖóÚj½N­6¥¶ºÛ±YA¦& !„×Pee%™™™tëÖ­£CB!®[µ‹ðJ"DÜl$#„B\C'Nœ [·nÍN7B!„7'©#„B\Cýúõëè„B!D’1B!„B!„׈$b„B!„B!®IÄ!„B!„B\#’ˆB!„B!„¸F$#„B!„BqH"F!„B!„â‘DŒB!„B!Ä5¢íè„BÜ< ::!„B!®k’ˆBa3^^^‚B!ÄUÑëõ‚ø©IB!„B!„׈$b„B!„B!®™šdCf³™ÊÊÊŽ£Aööö¨Õ¶Ë»%&&²uëVΞ=‹^¯'00;I“&Ùìµ=ñÄÜyçLœ8±CŽo¯¾„B!„Bü¾H"ÆFôz=§OŸáäÉ3ØÛÛ¡(JG‡€J¥¢²¢Š=ÃéÞ=''§6÷9þ|~þùgzè!{ì1ªªª8}ú4...6ˆX!„B!„¸yI"Æôz=û’÷c§Ó2a|*•ª£C²¢( ¿ürœääý 6¤Mɘ;vpøða>þøc«~ÂÂÂlªB!„BqS“DŒ ”––RR\ÊÈQCHLLÂÅŹ‘ýÊ>|0:MÏo0X¶ág ·_×™Šyä®~ìÞý¥¥¥mJĬ\¹’‡z¨Ñ>ŒF#ü1ÉÉÉ\ºt‰N:qÿý÷3nÜ8Ë>O<ñ#GŽä§Ÿ~âܹsñ·¿ý£G²iÓ&rrrèß¿?Ï>û,îîî–ã’’’øòË/)(( gϞ̙3‡   ³µ1¬Y³†ï¿ÿžË—/Ó»wožzê)üüü8zô(Û·oçôéÓøûûóÔSOiéùòåÄÇÇc09r$³gÏÆÑÑñªï»B!„Bˆ›ƒ$bl@Qœ]œÐëËéÒ%ˆ®]CÜ/55½¾Ü扽¾‚bÇ0ªÜB|Ý®øz}..Nmš2UYYIVV½zõjt­VK`` ¯¿þ:öööÄÇÇ3þ|zöìIpp0ÅÅÅ|òÉ'|ðÁøúú²dÉžxâ î¾ûn^{í5Eáõ×_gÙ²e<óÌ3\¸pS§NñÞ{ïáããÃòåËyöÙgY¹r%öööÍž³µ1~ùå—ìØ±ƒ_|///Ž9‚‡‡EEElÙ²…… âïïϧŸ~Ê?þñV¯^V«eÑ¢EñÁ`4™?>ü1sæÌ¹ê{/„B!„âæ ‰rrräÈ‘£äç_nðõ²2=þíp^ÜÊÆ`Èkðu©'§[Ú|ž . (Š%!ј»îºË²ýÇ?þ‘Í›7sâÄ K’ÃÍÍ3fУG¦NÊŽ;¸ÿþûñôô`üøñlÚ´ÉÒÉdâÞ{﵌:™;w.<ð ÜvÛmÍž³51šL&V¯^Í›o¾IDD£G¶ìïîîÎôéÓ- ©?üá|÷Ýwdffâëë˦M›X½zµåZ~øa^ýuIÄ!„B!„DŒ-étvÄÄ ï€óêxü¾Áí~/// :!S“DiHQQ?þø#¿þú+¥¥¥\¸p¡ÞjRµëètéÒ€òòrKò¢K—.”——[ö ¦k×®–çvvvôíÛ—ôôôŸ³¥1fggS^^nIÂ4ÄÎî·QM~~~888P^^Nff&f³™ÿú¯ÿ²\£ÑhD¯×7Ú—B!„BˆßIÄØHQQ©©™F“Š‹KÚt¼»»;žžž8p ÑDLEEO=õÑÑÑÌœ9___ž~úiÌfs£ý6Tܸ%íìì°³³kõ9›Û¿´´ UÓ¸jâuv®®´dÉÜÜ®Ù#„B!„â÷K16ÒÙÏaÆttM*.)ms÷ÝwÿùÏ=z4þþõ§Y:uŠ¢¢"þò—¿XÚΞ=K^^ÃÓ¦Zª:Ñ•jy®( 'Nœ`ذa­>gsûûûûc6›9yò$}úôiUœ;wÆÉɉ¤¤$Æߪc…B!„BÜüÔÀÍBMó#8Ò/ä±v[ÛöbǾ#ü˜ü3Û÷Æh2µê\UF#‡Ž%çR¡Íclν÷ÞK÷îÝyüñÇY¿~=©©©dff²cÇ’’’ðôô¤¬¬Œ7R\\LBBP h‹ÜÜ\Ö¬YÑ#G¸|ù2}ôf³™‘#G¶èœîîîdgg£(J³û»¹¹1jÔ(.\HFFz½ž¤¤$«©RÑjµLŸ>?þ˜ƒb2™ÈËËãÔ©Smº~!~æÍ›GTTT½Ç /¼Ð¢ãgΜÉúõë[üÜ–Ú³ï?þø##FŒ ##êýÛo¿eüøñ–Ñ|ñññÜsÏ=|õÕWVû6Ö~5¦M›Æ§Ÿ~zÕÇ ¢¢¢ÈÌ´ýhÒ¶Æ&„BÑždDŒ(4=%íB.— йgœu C•‘ïã0yÌÐ'íB.GO§1¬O2³/qâ|&±ƒ#mcKhµZ,XÀÚµk‰gùòå¨Õjºté¤I“æ/ù +V¬`ùòå <˜Q£Fµù¼Ý»w§G,]º”‹/É‚ Ðjµ-:ç½÷ÞË{ï½Gjj*¯¿þz³û?ûì³,^¼˜§Ÿ~šªª*ÂÃà mÑÔ3fÌ@§ÓñÁ››‹§§'Ó§Oo²æŒ¢Ú}÷ÝÇ“O>iÕ¦ÕÞ<U-Y²„ÌÌLþ÷ÿ·ÕÇŽ3†72þ|þýïPXXÈ¢E‹˜7o...?~œwß}—¬¬,rrr,Ç6ÖÞqqqôìÙÓ&}ÙÚõ[CÚò}!„BˆÏÍó¯ÛëÜùÌâ†ô­×®³ÓrK.ü|â<ýzvk¶Ÿ£§Ó¸=¶º0¯—»+ϽµŒ¡·Dà`¯³yÌQ©TL™2…)S¦4øúôéÓ™>}z£Ç/^¼Øê¹Û·o·j‹ŠŠâóÏ?oô˜Öž3**ŠU«VµxWW×F ßP,7n´l«T*¦NÊÔ©S›ŒYQŸN§ÃÅÅ¥£Ã¸n½ð L:•„„bccyÿý÷éׯcÆŒ`Æ Œ3†{¿ýío–ãko‹'žxÂ&ý´‡ë96!„¸™½` ñT?gHͯ¢PoÆÜößýÖ¢ V‡“†®Þvô Öá@Ÿ€k÷ÙGˆö ‰˜k`ßÏ'Ø'¼Ñ×»ùñÃî éDŒÙ¬àà`oÕößOüáš&a„¢#TUU±páBvíÚEnn.;wæÏþ3·ß~{«úILLdÅŠäççÓ§O^|ñEBBBZÜÿêÕ«Y»v-ùùùÜrË-<ÿüóXíSZZÊŸþô'ÆgU‹jåÊ•,[¶ €íÛ·3eÊ^xáÌf3+V¬`ãÆ\¾|™~ýú5Ø/T×°zôÑGY°`öööìØ±ÃjšQc ä–Lïzå•W0›Í¼ñÆ@õÔ¡#F0cÆ žyæôz=£GfÍš5¼ôÒKÜ{ï½Lž<¨žžGrr2'Ož$00矞þýû`2™Xºt)[¶lÁd2Õ‰ØÔ}¸±-Y²„-[¶ ( £Gf×®],Z´ˆ   «8÷îÝËÒ¥K9wî>>>Œ;–'Ÿ|’—^z GGG^}õU˾+V¬àÈ‘#¼óÎ;ר÷EUU‹/fÛ¶mTVVÇÓO?“““åšbccIJJâôéÓ„„„ðÒK/qäÈÖ­[ÇÅ‹‰ŠŠâ•W^±¬H(„¶²çLŸ%•’’Þø*¥­§X}©Ù0+PPj¤ ÔDJZŸì)f`ˆwad¸ƒ Ï/ĵ#5b®‚¢ÜœŸÒ¢( jMÓoÅgv¢V«0V­ÚÝ]m£B\ªªª(//·z˜ÍfìììfÁ‚|õÕWÜyç¼öÚk¤¥¥µ¸ïŒŒ xõÕWùüóÏñòòâÑG¥¢¢¢Eý¯\¹’ï¾ûŽüã|ñÅLœ8±Þ\“ÉÄ‹/¾HDD„Uª?8?òÈ#Œ?ž}ûöY’#}ô?þø#o¿ý6«V­B§Ó1{ölªªª¼Žû￞|òIüñ6×àªÃO?ýdY1îÀ@u]™)))XïøÂÂB/^Ìœ9sX»v-‘‘‘–„À¢E‹Ø»w/ï¼ó~øa½º[M݇öŽmáÂ…$%%ñ¯ý‹¥K—RXXØ`íšââbæÎË]wÝŦM›xçw=z4ãÆc÷îÝV+î%$$0vìØ&kìûbþüùdee±råJþóŸÿ••ÅÂ… ­®iÉ’%<óÌ3¬]»–fΜIFFo¿ý6Ÿ}ö™™™|ðÁõ®C!ÚâÍÍ…<ýe¾ “0 (JuÞEQP3Šbªþj¾ò¨Õ†¢’VÁÓ_\âÍÍ—mƒ×–$bÚÀ`0`0š]æØhlºoüþ_‰êÓ½É}†÷ëÉÑÓéhí´äµ:V!„¸|ýõ×DGG[=> ÀÔ©S #00Y³fÀÑ£G[Ü·ÉdbÆŒôïߟ€€^}õUT*•ejdSý›L&–/_ÎK/½D¯^½ðõõeüøñVu£Eáí·ßF¯×[ŠhŠÁ``ÕªU¼üòË„‡‡È믿NYY‰‰‰ £Ñh,5§¢¢¢Z|ýÍ1b%%%œ9s¨ùñ׿þ•ÂÂBÎ;À¾}û­ûåááÁ¼y󈌌ÄËË‹‡~˜üü|2220 |õÕWÌ›7ˆˆ‚ƒƒ™7o^‹ïC{ÆVYYÉ×_ÝhlµåååQUUŨQ£pss#,,ŒÞ½{0räHÊËË-ß3œÀ#'Ožd×®]„††²oß>æÎÛhµãÀÑѽ^Off&&“Éê:kïÛÜ}3fL»Å–••ÕdlµuëÖ¨¨(¦M›Ftt4“'OfÈ!ØÛÛî]»ˆŒŒ$11‘¡C‡âììÜäq IKKÃl6óÈ#Xþ~7”•Yø©ghh(P=EËËË˯^¯oôΜOmpߨ!‘lN<`Õöÿ;‡ˆ®Ü5f(}üPÀ÷ IDAT#º6y®¬œ|¾Þ¼› ;ö‘rô ~<Ù±ï/¾ó)[v¥°e×AË£¢Ò`£+BˆëGyy9?ü0yyy<öØc,X°€ˆˆL¦¦G6G§Ó¡Óéší¿fih³¹ñ߸ <777¾üòËŸß`0`6›ë]GM\ yã7¸ãŽ;X¸p!YYY|óÍ7->_sbccÙ¿?éééh4BBBˆ‹‹#11‘¼¼û,‹-²Ù’Ô111:tˆÄÄD¢££5j'Nœ`ëÖ­ :ôª–oè:›{½î}h¯ØjŠñ6[C Äk¯½ÆòåËIHH 77¨žž”••Åùóç9tè111-:¬¿/üýýqvv&!!¡Õ×#„¶¶çLEûLGR0›˜;чiƒ][ÝË´Á®ÌèæêdÌ·)eì9]ÞüB\$s•4 ={ö@›a ¦¢·ª§ —&8²Æýß°˜Ï·l ¢¼zXûí±ƒI9~†¤C'íó‰×3dê3f³™[o½µÙþÝÝݹõÖ[yë­·HKKC¯×“˜˜XoÚǰaØ={6¯¾ú*õ“â;wæÐ¡C\¼x‘òòrœœœ˜´¼OÍW÷ûB«Õ2sæL.\Ⱦ}û0™LäääpìØ±«ºF!„h‹Ï’Jmۡ•¢»&&õw¹ª$Liƒ]™ÔßåÊÈ3+m«íD1màââ‚s…°ú«ñs¤8Ö‰¤~¹üwü‡|°ö3.æä2}b4ö:-˾ù¯6ïf뮾ٲ‡/6%òï•éß+Œ Kþ›·çÎbêÄQ89Z/U}ül:O>0 {]“qõèJÞå"ŠË$#,„¸9tíÚ•9sæðá‡rÏ=÷Ï­·ÞjµÏŒ3زe‹¥NHÝç½zõâ¾ûîãÝwßå¾ûî#==?ü­VÛ¢þÿû¿ÿ›ððp˲֫V­¢¨¨~ñôY³f1pà@žþùz5lî¸ãn¹å¦OŸÎË/¿ Àܹs1bÏ=÷øÃ())aáÂ…õ¦•¼ûî»tëÖ­Þ’Ú/¾ø"`ëÖ­Wqg닉‰¡¬¬Ì²´3`¹Ç¿ê~Ÿþy¢¢¢xúé§™={6¾¾¾V‰´–܇k›»»;P¿VLII ;vìà`̘1¬[·Ž·ÞzËjÙ¸qãØ¿¿eZRKŽkèûâOú=ô , ..ŽG}”'ÿeŽB´‡£ í°DuuMÅlâ±8¯6÷øXœŠÙŠ™CéüšeËx…h¶ž<Ü’þTÍl×nS×j«û¨y½æyͶ¦Î¶¶ÎW×K—.%7·ÒQK”––²øóO¹xŸ­{{û÷SÌ ù¹¿\ÆEŽ`@ŸHÊÊ+ШÕ8Ø7_Ôñ|f6£‰]­—åü>þ'N§]`ü¨ô ¶zmë®ÆG´<ß¶maá¡6[êTˆëUaa!]ºtéè0nj5?CkêzFJJJ,Ó<„¸‘åçç3aÂöìÙÓâÂË5ÒÓÓ™6mÛ·o·ŒˆBˆÕ’øb>ÙSb»k–§6¹³Ÿ ¿Û×&ݾ¾.—?—¢Rk™5Ê'nu¿ª~233quuE«Õ¢Ñh, y©¹Õ¾t:Ý0 0Æ:_À\g[©µM­çµÔzZmJmu·Óö$Â2"¦ ìííéá×cZÓ?œTj0påÂx;>©ÚÉ?¾]ÊÆÛ±·Ó¶( p&íb½$ ÀqƒùÛC“)(*år±õPúè£krŒ-ŽBѸ“'OÔê$ @||&´ª“ÅÒ%8˜†ÜÑ•”cgÜ7¢Á×U*U½!s¾Þœ8›N`g﫾¾öäèèHLL í~®ŒŒ ’’’ˆŽŽ¦sçÎ(ŠBAAÎÎÎí~n!„×·’’–/_μyóðõõå¾ûîcÊ”)­î'##ƒS§NÛQ !ĵW¨oüÁWKÁ Š™N®Í/UÝR\5Õug0·KÌBØš$bÚH«ÕâZ¥£îªõ;""™>`"ßïOà¸>ÒÁ¨]­ íªì4˜Fzpš*Þ=µžÎìî߇ءí+¾Þì:pŒA}º£Vן£xà×Ót ´®ýRQQ‰c#uk®*•Š®]»¶ûyÌf3{öìá¶ÛnÃËë·‚`:ujâ(!„¿}ûöeÅŠmî'88˜ýû÷Û "!„¸Yý6"Ææ=+fTJõô'EQ¤®‹¸®I"¦t:]ÝýÉ˹Œ}ˆuÒ#_)ÁËË“'ÜMU•‘÷íá§ìcäE˜P‡40#™œX“ó3?nâÑG¥¼¼œ5kÖðÀTß»ü|˜2eJ“ç]¶l¡¡¡äää ( ÑÑÑõŠ…¡Ñh¬’0-½®eË–Ñ­[7rssêAõ§-uv ¤3ìÑçòÃR‚ËÝ™w;~}™~{4?ìN¡¼¢ {–Jƒ‘_/nõÛêHË×üÀŸ§Ž§L_ÑâbÀ-áèèHtt4nnnTVV²fͺuëFçÎ)))ÁÍÍûï¿¿ÞrŸdýúõ¤¥¥qáÂÂÂÂðóó³ÉyF# ÀÃÃ3gΘ˜ÈŒ3¬Ž/..n2 Ñ\ÿƒ ÂÝÝãdz}ûvf̘««+¿üò {÷îåî»ï¶ô5`À¼½½ÉÌÌä‡~àüc“ý7ƒ··7›7of„ øøøPQQaµ:×-·ÜB\\œÕµ———³sçN&OžŒ››‡"99™Ñ£G·øž !„BÑÕÛŽ‚²öYúØ…J›%bŽ]ø-Æ.ÞvMì)nP7]õå›1sM©T*|}}q:®®÷Ýa·çðñ_>0ʪ=²GO"{ôäR~>ßïOäXyú!Nhœ­hhœ´bÜ8cV˜ÿë—$¹0&b·Çn2¦î]É/,ÁÅÙÑ—h¡V«1ÞÞ<4á [’IÉ>AA5ê@ëŠJ ¦[\È–§îÄçÛ] ðçöØ[Ñhê¹êä鯯ûyøž16ºÂjyyy$$$——………TUUWRonfÍ ¦Ñ}Íæ†‡=6uÞÚ*X àááÁ` 33³Þ´¥Öô_w¤OÝçuÏm4Q«Õ-꿱}T*U‹Š×¾vN‡ŸŸ·ß~{³Ç !„Bј˜>ÙS÷SN[¨@¥B¥R³a6ñmó¨˜ì"#ög£¶s•Š˜©óûpC’‘ t6â­uÅT\?[|ÉÔüòÈ:Ž1Q#¹5$ »µyT&å6º¯º«sõòסgyuýbþ³y-ú²ß–Ï>›žÍŠu;Ú¯ÇÕ]H._¾Œ½½=:uÂd2‘Ý`"ª“*‡¦²²úžìرƒñãÇãèèȱcÇêíïàà@UUÙÙÙ@õ¨Ž’’’VŸ·¡ókµZFŒÁŽ;HMMÅl6[VM2WÕCE±Ô’ÉËËC¯×ãããÓdÿ¦É|}}ÉÎÎæòåêrÐF£±zÙ¿&øúúR\\Ljjª%®†KB!„B4¥O€Ž!¶]üC…ºú7Í* K¶g·¹¿%Û³A¥•š!Žô±á²ØB´—}DÌu#Ø'€ó§Î@”õüK”b2™ê}°¿t)ŸƒG!½8›såºÛ£}2„–üèP;k(bO|ÚRâSéZå͘Þ#xü˘ûÈ=ô ­?ò£Êضé)ݺu###ƒ/¾øüüüê ©QQQÁ‘#G âØ±c899ѵkWüüüøöÛoñ÷÷ÇÓÓÓ²¿J¥"66–mÛ¶áè與‡‡¥®KkÎÛÐùíí퉈ˆÀÉɉ””Q©Txzz{Uý7D£ÑpàÀŠ‹‹qpp`üøñhµÚ&ûŒŒdݺuŒ3¦Á}œ‰‰‰aÛ¶mØÙÙáàà@lll“5oììì˜8q"{öìáàÁƒØÙÙIhhh«¯IˆÕ¿ÿýoæÌ™Ó.}ñý÷ßcøÿíÝ}åÇñ_wϾ̾°oì ¸Â‚Ê›J( 5ÊKEc@©«$•p©ÂºTªîþ¼ªTr÷§¹;/¹JÕýwWVÅxZFÍ•w€†ˆÄ€ÈEÀÜ]" u¤DWaeyYØ—ÙÙÙ™î¾?vgišîyÙÝyÙï§œêî§ŸîyzvéŸÏóôؘ~øauuuemCØútÍäu Iß¹·¡0Ó É!w¢GŒaF´÷DŸV/®×77µd?>À+Ç®jï‰>™‘Z†©?¿·‘Þ0( …þSšËùŒ,ëÞ2ÓSæ¥ËÍ€¥5±ni‡ëê¹ç^Ô—ºÿ†Ib‹É¶m½ð ڽ{w±›‚ síڵЛcFúg¨ã8²m[©TJCCCÃÿŠa&Š7ß|S ,Ð]wÝ%ÇqBƒÛr b®]»6Poß¾=´ 0wý㯯é?þ'–½b6®v”\{LN*!7™ÐßüÙʼØWŽ]ÕÓ¯þIFUÌHvnhÑkË8B6çÎScc£"‘ˆ,ËšüO¸3³ª««7I’dKJù–îÄÒ™X÷/5±ô¿4QGž:Þe¦õ0 Ê©GL>óÁÌêÜ1¦i*Q|d@ŽS{Ã?Ê#KôÌÁ½²—Õʺ§A†eJªË8&ÌIØ2«Lõ(Ù““°U¿¶Mƒï|®š~G ÛækÞ¤¾Ps‡î}d½Ú;Ú5o^£"‘àÂûú.éø±ŠÇG¦ÔÓc¦ôôô”ÌM€¹íÈ‘#Z»vmècî½úûûu÷ÝwKºy®¨ró»ßýN}ô‘ÚÛÛ'‡0•æ¶>Ú¬O.§¦ß3f¢WŒ S2#2MGŽåè^=£Sçé/·uf3æÂ@Jÿr°W{Ž.Óª–iVi}W½~ðÕÖ²ÿ½Œ@ù„e3oL1‚˜’˜`·êêêTWU§Ýªã2ª}—÷@Ãø21x¼;’’µ4öYL©+£2«LEÔ)vôsYWm5F£²Þ‹kUm³º—.Q2•Rl8¦øÈ€~{èpæÆ†ëë´bårõ_ëÏ8¤e6¹®«³gÏêþûï/vS@.\Ðm·Ý–S]×u+æÿŒÝvÛmº÷Þ{õé§Ÿêý÷ß-àŸ¾Þªïÿ{ÿ4؉ߟ†)ô$«J†\™†´÷øíy÷3=±i‰¾¼¦U«GÕÞ8~»zi(¥SçãzûÃ~í9vN†Y%3R-êÖÝ·6èÇ_o—iš¡ﲘõ§œzÄ”¬úúz­Y³Z§N’óÑgЬjÎXßJʬhôãAÙWFeµÖȨ6?qI5#†Zç©ú÷1mh^®Åë:•L&Çå8R|4.Iª©Íí±l†a¨6Z£‹—®hݺµª¯/Ì#â¦Ë0 mݺµØÍP"\×Õ‘#GôÑGɲ,-]ºT›7o–41üóí·‹ÅT[[«Í›7O±¼té’>¬X,¦ºº:=öØc7üœK$zõÕWõÅ/~QÝÝÝúôÓOuäÈ% µµµiÛ¶m:}ú´z{{õòË/«»»[k×®ÕÁƒojã< K—.©¯¯O/¾ø¢ÚÚÚ´sçN½ùæ›êïï—mÛZ³fMÖ€Ùqíß¿_—.]R$ÑÃ?¬ÎÎNÅb18p ð\ù^§ßñãÇ588¨m۶ɶm½ôÒKÚ¼y³:;;oª;þü¾1À\ÓXkê_¿3úÔŒñ {]MtŒ‘äÊc˜’miω Úsì¼\בÒÓILÌ+#Ó’©•aEdšUz|C“~ðÕùÓŽAL¬^½Zñx\ïœþ“œ;®EsÉIÕ–’Ÿ )uyTÕËe÷ŒiìýªJji±T7hjÅ‚uš¿¬U¶íÊít‰Ddš¦ª«kÕØ8µ ¬$©¦¦F‹-ÒÒ¥K q©Pp===úüóÏõä“OÊ0 ¥R)IÒØØ˜öíÛ§;wjþüù:{ö¬^{í5íÞ½[®ëjß¾}Ú¾}»:::ÇoxÜ{*•ÒÞ½{µ~ýzuwwkddDÐ7¾ñ 555éĉ:zô¨¾ò•¯èìÙ³zðÁµpáBIÒ÷¾÷½Àv®ZµJçÏŸ×Ö­[ÕÞÞ.Çq´eË555ittT¿øÅ/ÔÝÝ­E‹e¼Þ{î¹GíííêééÑ믿®Ý»w+žkþüùy]g7ê—¿ü¥>þøc}öÙgºýöÛC²ùá£Íz`e­^xwxнc ÉpÇ'î5-†$Ãé˜r K®‘\[®ãÄaŽ?iÉ0-ÝÝU¯]÷6éÛdš&½aPvJ)ˆÉeÈRIkZ±b…Þÿ­††“r )ùɰRWF]תÄ—”:3¬Z;¢¶Þ5¦ªµfÙýjlliZŠD"jjjRCCƒš››ÕÐÐPìË€YÓÒÒ¢ááa:tHÝÝݺå–[$I½½½jii™ì¥±|ùr8qBW®\Q"‘PCCƒ:::$IÑhtò|®ëjÏž=êììÔªU«&Ï‹ÅtèÐ!Iã!mOïir¦i*•JéøñãR,ÓððpÆc ÃP{{»$©««K---êëëÓÒ¥KÏ•L&óºÎ«W¯jÿþý“uî»ï>-[¶L<òˆ~þóŸ«££CßúÖ·¦uÝ€¹íK+jõ¥µú°wLGÎŒêŸé“+I]qää4ÈÃHÿ'W– s|ÞðÆ{Â8¶\¹’;>l©©ÎÔ-m5ºsi­¸­Nk—D''ÓM0„0sÞ¬N¶;]¥ÄÌ” Ù‘g„eYjJÕiH†âï\z㪷jÕÖ;¢·Uw¬¾G5µ5ŠDªTSS3¸´´´¨º:·¡FP‰šššôä“OêìÙ³úðÃuôèQ}ûÛß–ã87ý|“iš»!”ð2 CË–-ÓéÓ§µqãFUWW«¦¦Fzâ‰'2¶åã?š”;ÒúúútðàAmÙ²EmmmêïïרØXÆóûÿ¡˜J¥dYVè¹ ÃÈë:[ZZ´k×®›ê¦?Gºo eMgµÖtNý>&ýF×uå8ŽÇ™\w]wr:hI/Þ^0éý¨³vï^låÄdêS´/­¶¶Vë—ß!ãSZíV׆Å2-KU‘*Eëê4oÞ<Í›7O---Ìè ‰DB©TJ+W®Ô­·ÞªgžyF‰DB‹-ÒÁƒuáÂ-\¸PçÏŸ—ëºjkkS4ÕÁƒÕß߯ÖÖV%“IE"‘ÉŒmذAƒƒƒÚ¿¿vìØ¡… j``@gÏžÕòåË庮R©”ªªªF588¨… jÙ²e¡C“ü®\¹¢h4ª (‘H¨··WwÞy§¤ë½eÒÃLÓëŽãL^O__Ÿb±˜:::tæÌ™Às-\¸0¯ë ûýràÀmß¾]§NÒÉ“'µnݺ|sLa““à§Ã•t“a¼u½=_aæ”L÷øeÚ”z3Õ¡HEù2"‘ˆ6m܍ֿfÕÕÕMöv©¯¯çdÐß߯wß}WÃÃòm[›6mšœåÑGÕo~óÙ¶­††mß¾]¦iª¡¡A[·nÕ¯~õ«É0eëÖ­7LbûÐCéµ×^Ó¡C‡´eË=þøã:|ø°Ž;¦êêjÝu×]Z¹r¥6lؠÇëäɓڹsgÎaùŠ+ÔÓÓ£çž{NÑhT‹/–eY’¤»ï¾[¯¼òŠvìØqúeY:vì˜T[[«;v(‰„žk*×é÷Þ{ï©®®NÝÝÝêììÔK/½¤Å‹çô¸nf’ÿ>)½ÄdÚFÅšê½}I4…þÓ›ëù ßÒ[nl{뛾}¦¯ÜœxYžWijl¼|ùò1ÿ_l•ãÚµkêêê*v3*Zúg¨ã8²m[©TJCCCZ²dI‘[*A¶ f&œ;wNŠD"“sÐÌÖ{ÏeÕÕÕ›$ IJI²=ËôË™xibéz–®¯\žrï"ÿ¶”ÿP¨‚…¥Þ#&é^3%=‘/ 7„P1sÈTúD%óEPáæÄ=|91A_H.“÷uEE`†=±ê½_ÏwrÞ²»Ï/tSˆ ßs„}YNXÃ0€bº<± º¯÷ß·Oµ·L1rŠŒŠÝ#f*“â„­{Ë2×6 c0Ç÷3 ™LžÑø„¼aÂîïóÉÂÎ[4Å bÂ.:l㩞?hÖd{llìC& x.^¼ø{1þ'Mw®˜\³…¢2Åî“‹\’® õô—èøÊ“o½õÖËm!È˳Ï>ûޤäĦÿQÔAaL¾ë%©‚˜|dz.ød˜]»v7 ã½b˜}ñx|ïSO=uN™{Ä(d»¬•k4iO¦ùbü¯Äo¼ñãmažÇQ2™Ôèè¨FGGÇÇ'·“ɤ‡9†åÍ0 û§?ýé¿IJ(ü¾Ý/¨¼,o’#Ån@¸’ ÝÜÉ‘dM,MO™))µk×®w{zzöÕ××ïpÝâ„kÉdrò•J¥d™¦ªª"2 C–5ž‘Ù¶-×u5ËvE"UUUM¾('|ðÁžzê©O%¥tý^Ý?½Hº,mºóÆ”ŒR bÒªáÛN—¹¾}ÞñEAuý/gbßhWW×ß÷ööί®®¾o¶Â×u•H$488¨ªªˆÔÜܤªHn_E2•ÒH,¦¡áA%“¶æÍ›§šš>ÐS- IDAT1Ì @)èïï/vPÂΟ?ÿÏëׯÿµ¤Qߟ{C˜ !JA=a2ÍëßWrÁÍL1þp$[½\ëçr¾ `ƾ¤_æDY¼³³ó¯{zzþ¶¾¾~‡4”Ì”x<®Ík¬×-K˲nþø/_¾¬ .(‹I’êëëµhÑ"µµµI’ª"555©©©I©TJW¯]Õ… WÕÜܬh4:cm€\´¶¶» S222Rì&T4Ã0ì>øàGëׯCR\×Ç÷ ^ u³žoÏš‚‡¥Ø#&WéaFRðð¤ !IéõôsÊmI±®®®¿{þùçßzì±Ç¾/i‰TØ@ƶm]¼xQ õºµëY–5¹ïôéÓzíõ×uäí#úß?üAW¯^ §ñ‰y“º1€I/Sº9˜ñ/ýCÒALÐP&…lK%Ð#¦Tƒ˜tYPã?Æ (·|ûMOyúå aL϶¥ñ°&â9&×ëâo( e $¼ûÓ¤NM¼l]Yü½alÏË;T)}N[7-ÞýÞò\æ‡)zSì¡I…œ'Æ{ŽôP¤ô¹ÓÛŽÂßÇû…¦Þ ' !  ’寅#Þù_‚zÄø{¿H7.¹¼w.JâÉK3ÄjÞ s…7þuïRžúé4Í^K7‡6A½o²V@¥ÈÔÃÄ¿íŸ÷%½´=Kdzàõr zŸ°¶M׌6Åî“Iú‚ýOAòÞ‰xÓõýOPòöˆ1u=ŒI‡0®ç†n~Ê’¿~¹Ô \åxd S¼=_lßÒÖÈwÿzÐ$½3ù”¥‚›Éà ŸsOuÒ^oYÐP"ÒÍ“øZ¾mÿº|Çær T¢láFØÜ-AOF a‚&è•nv‚ÞG!Ûþº¹*»1…ž4ìÈÞ°áJÒC¼=bÒÁŠ·'Œ¿g7±=åAm+ Üå3ñmP`âc¼“ò†…0ÙÞGêN׌õ¨)å¡IRæ0Ǿ„ Qòîó®;¾óxõ>[žõ\‚Â@%É%” DÂB–°Æ{lФ|†H•¤™ 5<É_žÏ%éÆÞ/AOB23ŸËÜ0SÝ@)Êfd B†9!u‚‚™ ãƒöùÛT²Ã’¤Òï#÷ŠÉuˆ’¿GŒw^ùöK×'î•ÂC˜é†+„3€R2ÝÐ!—!Cv@¹?` ëõ’Ëù3µ¥¤ÌF(0Û½b¤›‡•‡MTÔ&p]PpÔ£Å_.…‡0™Â™²ë #•O¶o*aLØÓ•ÂÞ'×¹aüÇP ò 12õh fVº!L¶}aÊ>ˆÉ÷}²…1A½e²…1ùìóŸŸÇVp]¶ Âñm…-Þzùì ’”m˜RÉ„0Ri1AÇ……4™—LAMXo˜Lç k+sE¶!@aûÓëaõ³õ¨ yry¿\ÍÉ Æ[?×!JRîaL.ûÃÞ;—öPé¦òé\‡-…íÏ5„ɵ}A*&ˆÉ÷½2õRñ–åƤ׳õnñA ko.×A@¨¹auüåÙ‚”°¹_r96ì}Kª7ŒTºAŒ¿~¦Þ*Ó c²ÕËÔ&0.S“)™N“é|™Ú¦â‚˜©¼_!˜ ºùž—€ì†ÕI¯gª[Q!Œ$Y³õF ÄdÚïÔÏg¿·^z9k_ e&ìÉHþ:^™B–lûËö½==f+ŒIog \ÂOÏ\0ô˜ÌùL‚V'[öˆêLç-‹Þ0Rñ„Ù c¤à°%×Gcg;.5€r0•P"Û1¹—zùÎïB/n4•0$Ó<3ùô É¥^¶6̺b …šo¥eÓýLŠý™PHÓ -òíÝRˆ²læl#M½ Sí“oÝLåàº\{°d*Ÿ©^0Ó=® J%`(T“OY¶}¥òÙPŽò eÂöªÌtŽ+˜R f:ŒÉõ=fk"_*E¾áJ®u**„‘ŠûÔ$¿é„¥0ÔˆPɦ¶äsÜTzÓ”…R fj¢\z¹P¦èzÂà¢)Åb¦ŸZD(ÀìšNošŠ a¤Ò  Ñ®éÎS¨v0×"\)D€RR!ŒTÚAC¡Ú–Ïy Þ0—:T)TxRr!ŒTú¡B!Û7ÓCž ý~S¾AF) !*ÉF*Ÿ° ”P8s"€I+§P‚GNPf"0)ùF*¿ b&Û[nŸåd&ƒ’²a¤ò f«ÍåøÙP*f+)›F*ï°¡Xm/çÏ €B+VRVLZ%„ ¥~ ¥Þ>¼J=à(õöeT)!A¥\WÖ!ŒTyF¥]¨€&­Rƒ‹J½.æ’Š `ÒæB`1®€JQqá‹×\ )æÒµPn*:€I›«áÄ\½nJÉœ_¼$Æñ90óæ\ðâGŽÏ€©›ó¡K†©ã³Ìe-@åø»Êiãá}NIEND®B`‚flatseal-2.3.0/screenshots/en/2.png000066400000000000000000003366661467660615300171620ustar00rootroot00000000000000‰PNG  IHDRb6½‹%ðsBIT|dˆtEXtSoftwaregnome-screenshotï¿>-tEXtCreation TimeSat 13 Apr 2024 09:35:03 AM -04€ƒ…ñ IDATxœìÝyX”åâ>ð{6`†PQwÀÜ-5õ›–¹åšžº¬Nu:§¬cžêdý<¶g–©eš5-ÍÒ0sÉpÁ]Oˆ Ê¢ì00Ëïšif†™a€îÏuqÁ¼Ëó>ï;3ðÎͳDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDvIÐÒhÅx툈ˆˆˆˆ¨=S·tZ#† ÆñÚYA jñ:5½vδע½ž7‘=iwÁL{ $ÚÓ¹µ6í"”iáD{8G""""""¢¶¢M2m5¤h«çEDDDDDDÔž´¹P¦­mí|ˆˆˆˆˆˆˆ¨ 2m%¸h+çADDDDDDDƵú@¦-Íu9N[¸ÎDDDDDDÔö5&èh®¤U‡1­9 hŠº›Sfk¾fDDDDDDD¶fN0ÒáI« dZc¨`Ë:›*«5^"""""""{a*(±eˆÒª™Ö6Ø¢¾ÆÊhmׂˆˆˆˆˆˆ¨51˜Ø"Hi5aLk šbŒ–ÖtþDDDDDDDmES„2­"Œi-A„µõ4´Ý%""""""²-[(Ö–g÷aŒ½ -ÀØêšØûµ%""""""2ÅV¡†¹å´‹@ÆžÃ[…0 •céqìùš57KC†¶¯»¾M…1ö*XS/KK[ÇØëu"""""""²'ê:ßÍÝÞœuÖ+vÆØcÀÐØ¦1ŒÀÊã‘ajXÞ ÆØºVÆØ[èÐØnBÖÌŽ$´òXDDDDDDDô's•e4¶uŒÝ„1ö.4&„±4€1ÕòÅ–³*ÙÓõ%""""""2—­Æi1µ¯©–2æ,o•aŒ=–ÔÅÚÆXëKº3ÙÓ5#""""""ji–„6ÆÖj%cë0†AŒ[†0æ0æ8™›ˆˆˆˆˆˆ¨=hhÚiKZ½˜È´Ú0ÆB…æajábÍLIöp‰ˆˆˆˆˆˆšš5¡GC-fê>nÓaLKMÂXÀ4Õ˜1¶,ƒˆˆˆˆˆˆ¨©Ù"¤0wLK™6Æ´t@`MÓØ¦n9æŒÓ”! QkcIw#c‹¡3 cÄØðØæ†0u[¶ûÙÒîJ†Ê&""""""¢ZÆf@²¤Õ‹±@¦¡–4ºËì>Œi©`¡¥BÌo #4²Ža ÑŸŒ…$ µfÑ OjÓfÂ{b `Œ•+0±©ºµGæNS­†ñ ÅXØÒÐzcÇ·4ŒiAŒ¥­al `„F–›:¾±º˜ZFDDDDDDÔÚ˜ÓÝÈÐzS­_ uG2Õ:Æš0Æn[Å4w`ÐÜ!Œ¡îEºëj9S· cõ0ô˜ˆˆˆˆˆˆ¨-ih¼ C]’ …+*Ëê–ÑæÂ{ bÌé’d*„i¨ŒÈŠ}Œ2–b`CDDDDDDöÄV!„9-]ê.WZ±L,7VVCÚdcËÖ0Ö†0Bëë~ZnÍ9µÆÆ„1ªZn¬Lcûk#nŽƒXÈœ.I†–7ˆ lW÷KÓê¥îwCu`(CDDDDDD황îA*ß…1@ígv%j?k«ë|×=††CË5û¶È4ÕÆ4WcËÐÂܱct¿ a„¾ ”Á†ˆˆˆˆˆˆÈ0C­T„|¡6„Ñ%*è·€ÑÝÏX4OÐb,䱩æ ,ÆV]’ …0º ðgð"ÔY' AmHe(˜±ä|ˆˆˆˆˆˆˆÚ2C­bT|)Ô 6\Që,×|i¶Õ h€?Ç1ÖµÉÐqmÕE©Éƒ{ìšd®Æ„0ºßEü,à°gÏžQ#FŒ˜+‹û«Õj7µZm«Az‰¨™”””Àßß¿¥«ADDDDÔî%€» …"ùÞ½{g¶mÛvôå—_¾ µ¡Œîgwj?ë~¯Û2°¬‹’ÝkŽ––ÃPèÑPk¡õºA‹±FôÇ—€tÏž=£ÇŒóšJ¥ê ju«|>‰@QQZºDDDDD ªªjïºuë6¼üòËi*Q (ÿøªÛ"Fw,ÝV2º­Zêì[w½¡ôu»B™Ò¤€=1¦º%™š©îòºá‹îcÍ—HçKš‘‘ñ¶T* 0€!j ÄÙ@ LIIy½OŸ>{PÆ(¡Æh¾t» Õ} c 6ºì¦{RSw»±$è±d¦$CÛ aã-a„dùùùë¤RéTµZ͆ˆˆˆˆˆˆ¨ ¨ÕjQ=Vfee- CýÏç¦>Ëj aеù‚5ÛZ¬5ŒÒPkÝeuÖ}Ò4O®6„ÉÈÈX) G1€!""""""jz;vüÇõë×§B?ŒÑ|×m\¡aêó¾î2K‚še/AŒ¥õ0Õ…ÉPZ¦Û%I€ÚAyGjZÂQó ysÕªUÝ8@¿áDÝ1†>ãë²4t±‹ ¤©“"sË·t^CÉ—±1a¨J7es¹wïÞ~•JÕ•A QÛcî1•••ËåP(ÍP+jJb±ŽŽŽJ¥-]"""jíý>®-ÜûTUUíussû€2ü9NŒµS^ëNumhÌ@¬˜¦´·ÉÂQÛXÍãÃjbdlªjcƒôŠ¡ß"FòÝwßxœ! QÛTUU£ë•J%JJJ —Ë¡RY2x:Ù+•J…ššTWWC"‘@(´‹v‘ñ>®V[¸÷‹Å½¤RéÇ߇~Ø¢™Öºn¸õ 1µ¹A@“5\±‡gËÚ“k¨o˜nËÝFŽ9×ÊcQPZZÚnÿ{ÒÖ) ”––¶t5ˆˆˆ¨‰ð>N_k¿÷™?~4j»'é~fôX@ç»±±c,ÑâcÈØscéũۅ©î§y,’H$ý؆¨}ª¬¬äï6N¡P ²²²¥«ADDD6Æû8ÃZó½O‡†àϱ\uX°×šŒÀ’åͦ©‚˜Æž˜¡Q‘ ÐcèÉ04žŒ^W%µZíÖÈúQ+%—Ë[º Ô ø<µ=üûn\k½6b±¸'j‡©;Þ«±™’ã¹€¡Y“l™MØŒ¸) µ€-NÊP†ž8퓪V«í¡%µþ¥}àóLDDÔöðï»q¶¼6J¥r¹555P*•Ú±x„B!D"$ !ÙdÈYoÔo<¡¡ e”uö ñéÚ¢ «µtcLCÓRÄלu-Þ ‰ˆˆˆˆˆˆÈž(•JTTTm]£R©´ƒWTTÀÑÑ2™¬QŒZ­ÖtKjè³½î ½ê:ËÔu¶ÓÕ¢‹1öÄX«nÈR·C"""""""UUU(++³h¹\¹\8995¶ u?³×m c—еZ[súzëOf¨¿Q»UQQaq£«¬¬ ©‚©Ïìuí5´_ÝŸí^S´ˆ1÷4vîoSö˜ÙfOÐÕ«W±wï^\¹r%%%pwwGÿþý1uêTôíÛ×V‡!""""""²¹ªªªÆ†(jáPhmËSŸÓu» Õmcª•Œ9-hÌmecóÖ8-Ý5©¡±`4ÌIÀ:†ÍB¥R‰µk×bß¾}zËïÞ½‹£GâèÑ£˜:u*–.]j«ŒˆˆˆˆˆˆˆlF©T6ª%L]eeeH$Ö~6§aEÝí …#B*3¶å`½uX;7¸©i¬ëvWjMãèèˆÙ³gcìØ±èØ±#òóóqäÈlß¾{÷î…Z­Æ_ÿúW[Ö®íØ±7n¬\¹QQQMrœ)S¦@*•âÛo¿EEE{ì1ÀîÝ»!•Jm~¼æ8F[7nÜ8«öûõ×_m\Ûª¬¬Äwß}‡ãÇ#//R©˜9s& €iÓ¦ÁÉÉ Û·oo±:>óÌ3HMMx{{ÃßßãÇGttt“¿²²³fÍPû;B*•ÚÅu!"Û˜?>nܸ v& ___ <O=õ¼½½›ôØ»víÂŽ;P^^މ'âùçŸopŸ˜˜Èd2ìß¿˜8q" ..Ž߉ÚÝ{$puuEPPæÎ‹þýû·`Íš—-ZÂ*ÓÕÕÕÚÝ5ÝT:ë¶€1´Üœríj|™Ö6F `¸eKC!‹ÍƇ¹zõª6„yï½÷0wî\têÔ b±;wÆÜ¹sñÞ{ïÁÑÑ?üð®]»ÖØC¶ ÇŽÓþ|òäÉf9¦““GGÇF—÷öÛocܸqz¿”m} jT*Þ|óMlݺ%%%èÛ·/œqéÒ%»œVqôèÑ3f <<têÔ >>>8tè`Þ¼y‰D8uê–-[†ß~û °téRÀš5k0hРSWLL µ&Ì©+µM¸pá‚¶u³©{#Àô=Œ5÷UÍ­¦¦Æäú€€\»v Ë–-Ãþó¼úê«HMMm°%bCe7‚%Ù€]uEª«¥º&™¹1åYÚeÉb%%%€Ž;šÜÎÇÇP\\lë*Øß~û 2™ aaa6lÃÝ“¶oߎ«W¯¢ÿþÈÏÏÇ|€„„‹·1eÍš5øê«¯ P(…ÊÊJÈd2888 11;wÆèÑ£¡R©ðí·ßbÛ¶mj»nhŒ1óæÍ3yŒM›6A,cðàÁ¸yó&–/_Ž+W®èmwàÀÄÇÇ£K—.(..Æ7ß|ƒÓ§OòòòðÆo //“'Oƈ#àääĦ•èÙ³'‘œœŒÅ‹ãË/¿Ä;wêmWZZŠøøxtêÔ EEEغu+Μ9£]ÿÙgŸaóæÍ‰D4hRSS±bÅ \½z´ï'Íã«W¯¢¼¼ÕÕÕ8wîàÊ•+P«Õ:t¨Ùõ×”›‘‘¡]ööÛocß¾}FTTÎ;‡ÿûßP«Õ9r¤v»áÇãñÇ888àôéÓèܹ3FŽ µZÝ»w›=þK~~>Þzë-äååᡇÂðáÃáääƨÓ4G׌óÞ{ïaݺu‹ÅˆŠŠBrr2^|ñE\¼xQo¿ýû÷cãÆJ¥ Ell¬vݘ1c°xñbÐkÅ7lØ0,Y²]ºt1û8¦Ø¢ "jÒÓÓµáˆfŒS÷F ÝÃXs_ÕÜê>ôöÛo£sçÎHOODze˰lÙ2¤¦¦Â××+W®lTÙf2öÙ¾±™¹Ë›TkhcWÜÜÜPXXˆüü|tîÜÙèvùùùÚíÛ²ŒŒ ¤¥¥!::b±C‡…P(ÄÉ“'ñì³Ïj»lh¬_¿b±GŽÁ;#~øAû¡Ð’m )((ÀþýûÑ¥Klذ¡^Mè999˜?>Ξ=‹E‹aÔ¨Qˆ‰‰ÁÑ£G1þ|›ûì3ˆÅb8p|ð¾ýöÛzƒ{mÚ´ ‰Û¶mæM›péÒ%DFF"## …ýû÷ÇâÅ‹!·Ý·b[¬·C‡xóÍ7±a䦦b×®]ؽ{7ÆŒƒ¥K—j›oµ¯gGGGlݺ[·nÅåË—1tèPík) kÖ¬X,F\\>úè#ìÞ½ýúõðaÃðõ×_kƒ˜óçÏkÿËröìYLž<—.]½Y ‘ÉdÉd(//‡B¡À;wpöìY 8ÿú׿Ô6)=qâ²³³1räHDGGãØ±c˜;w.‚‚‚R©[¶lÑ–›““ƒ'žxçÎÓkýeŒæ}Я_?,Z´¨M¿ˆÚ:•J…””ìÝ»b±D^^öîÝ‹   |ýõ׋Ũ·oÞyçlݺze¬[·NoÙ<€C‡aÉ’% Pû7åÒ¥Kصk–,Y‚¾}ûZ|ClQµ>3fÌÐ{}úh·íÒ¥‹ö—Ôˆ# ^+s¶1æÖ­[P©T2dˆÁq:’““ñý÷ßãÚµk())Z­Ö¶p2WZZT*¬­gLL >øàƒz{¹»»k»¬h®ƒ¦…THH\]]qâÄ <òÈ#:t(fÏžm4"ûO?ýIII8räNž<©}?¼òÊ+OOOí š1¥4S¦§§C­VcРAÚ×Ò˜1cðÑGi_Kèܹ3®_¿•J…óçÏc̘1ÈÎÎÆÅ‹QSSƒK—.¡S§N V)—ËQYY©h\Ó2æüùó˜0a‚Þ¶¥¥¥&˺qãöîÝ‹k×®¡´´Ô¢÷U=àââ‚S§Ná±ÇÃ!C0sæL¾ˆZ™ñãÇk …xá…Э[7ÄÇÇC¥R!22Rû{îÀ;ï¼£½©×ptt´:ìHMM5û8MYµ>ÇG||<€Ú.æO=õ4xodê¦1÷UöF,ë}®’H$Í=¢9³$i¶iê®H6íîÔþýhÓ`fêÔ©8zô(¶oߎAƒ°÷úõëØ¹s'¦Nj‹ÃÚ-ÝÙ’Ž?®·îäÉ“zAŒ®ÊÊJ09S9ÛèÒL¿¦V×äææâÅ_„¯¯/þþ÷¿#  ^nŽªª*úÍíª««!ꢫîÀÅîîîØ¸q#¾ûî;íøãÇcÍš5èÙ³§Åõ²göܲ¥±ŒÁƒãÁÄ+¯¼¢m½RWÝ×€¹¯¥¨¨(|ÿý÷HJJ­[·°`ÁäççãÂ… 8uênß¾‡~Ø¢z_¼xjµÝ»wm—¸ˆˆ<ûì³zÛšúGnn.^zé%øúúâoû0{öl³ëáîîŽ/¾ø{öìÁ©S§püøqœ8qü1BCC-:'"j9„üýý«ýï®æï¸îï9¹\nðofc¦¶ä8MYµ>/¼ð–/_Ž'Ÿ|YYY8wîÜདD"1zcí}Us …&[®Ü¿Ë–-Ã;w´ÿðËÈÈÀ+¯¼‚Õ«WÃÓÓÓdÙVjÒFö¤5N_Ý¢úöí‹©S§B.—ãÿø¾ùædgg£¦¦YYYزe ^zé%Èår¸¹¹¡K—.-]å&“žžŽÛ·o#<<¿þú«ökãÆj§—Ô•••¥m  ™ñ 00ÐâmŒýÂð÷÷P;pVÝi3¯^½ ¹\ŽÈÈH 0@ÛuDwªaÍÀ4Ç7D3‚zbb¢ögΜZ­¶ø¿ø:tÀ“O>‰-[¶`Ö¬YP©Tì‡ÞJ( ܸq£Þ2&ÿ(éÒüA;sæŒöµtöìY¨Õj½&ªšnyß|ó Äb1ÂÃÃøê«¯ V«-ê–”õë×C$iû$@("55ð÷÷×~iZui‚$Ý÷Çõë×!—Ë1dÈDDDh»b6Ô/X7,íС–,Y‚M›6aÆŒP«ÕÚîVDÔ:ü¿ÿ÷ÿðÆo`É’%z¿¿4aï©S§´¿çâãã¡V«µ]LÑü]nè?È–ÇØ=DcëJD­—H$Âüùó6l€J¥2ëÞÈØ=Œµ÷UÍ­¡n_{í5m³zõj¬^½]»vEFF^{íµF•Mm£EL³§ešQú÷î݋͛7cóæÍúàáᢢ"üýïÇûï¿oö‡³ÖDÓFó¡P#00~~~ÈÉÉAjjª^@ñä“O¢_¿~HLL„@ 0Ø*ÅÔ6îîîÈÍÍŦM›0sæL½ýzôè°°0\¾|Ï<ó  „[·naþüùÚÁ•8€ššm«Ýþœš›ÇÏ?ÿQQQ˜3gN½¦w:t(Μ9ƒ¥K—¢Gˆ‡D"±h ­ôôt¼ýöÛ0`d2™¶5‘æFìÛ¹sçðÆo C‡èÒ¥ *++‘šš  vÆ,sbÈ!8{ö,ž}öYôèÑ H$˜3gŽv»¾}ûÂÝÝ7nÜ@DD¤R)¤R)‚ƒƒ‘šš ©TÚ`ÈO?ýb±yyyHNN†B¡ÀâÅ‹µ¯ù:`âĉؿ?žþyÄÄÄ °°xõÕWÔ¾?>Œ/¾ø‘‘‘˜5k–v0θ¸8( íûÊÔ_777äååaóæÍˆŠŠÂ‡~ˆˆˆÈd2mx[7|%¢Ö)((Æ CBB,X€ÐÐP?~X´hQƒû‡„„àçŸÆG}„‘#Gjg:´ö8ÈÉÉÁ_|QoPþÆÖ•ˆZ·Ñ£GcçÎHKKÃÁƒ1qâD“÷FéééXµj•Á{k﫚¹Ë$‰ÉÙ4ŸãV®\©ý,»zõj¼öÚkÚû^Se71»Ÿ©!lc‘H„gŸ}ü1bccѱcGH$x{{#&&}ô6n܈îÝ»ãÎ;øûßÿŽû÷ï·tµmN3}¤¡t5áŒn«WWWôêÕ gÏžE§NðÖ[oÕëÚÕÐ6ùË_àåå…Ÿ~ú iiiõŽûúë¯c„ (--Å?þˆ¢¢"TWW#<<sæÌX,ÆáÇѣGŒ3Fo߇~ãÆCNN~þùg£}Â_{í5L™28sæ z÷î5kÖh[䘣¦¦žžž8r䈶Û3Ïúè#½–tB¡PûºÐLk üù¾8p`ƒƒÜjƵºÿ>"##ñÉ'Ÿà‘GÑÛféÒ¥X°`D"víÚ…ßÿNNNÚÖ+S¦LAll,rss‡Û·o#,, ³fÍÒ¾¯‚ƒƒ1jÔ(“uY²d <==qàÀܺu žžž8zô(víÚ¡Pˆ¥K—ê'µn+W®Ä#<‚ŠŠ ÄÇÇ£_¿~ظq#ºuëÖà¾Ó§OÇ„ }ûöü»oÉqž}öYtèÐ{öìAJJŠMëJD­›@ À««¾u IDATÂ… [¶lAee¥É{#…BaòÆšûªæÖÐðqqqX»v­^ƒOOO¬]»qqq*›lߚĒy½ m_w ^aí,3ôX÷»æK„ÚV?ºß]ïÞ½›hh[+**ÂK/½„[·n!$$Ÿþy“Ó^M™2^^^õZYº µ>-1kRQQ‘¶Y]wïÞµº\j]4-vˆˆˆ¨mà}œi–Þû”––B.—Û´ŽŽŽÚqrÌåàà €€¢Îw•ΗÚÀwyŒ?–AgYÝ îö i—ƒõZÙÅà>x÷Ýw±|ùrøøø´tuˆZD[¬—ˆˆˆˆ¨µ’Éd6bd2™M˃å9@«è²Ôš‚˜VÉÃÃk×®méji‰D"¸¸¸ØlÐ`Ôk&{#Æœ¤Ë.ZºµvNNN6iÅ"“ÉàäädƒY­Uå lCÍâÇ´É6DDDDDDd;2™ B¡Ðê–1...-´: bˆˆˆˆˆˆˆÚ1'''H$TTT˜=nŒ££#d2»#Y¡%‚»iDDDDDDDDµcƸººjñ­©©R©„JU;ùP(„H$‚D"££c[ `š}_¶ˆ!¢vE,C¡P´t5¨‰‰ÅüóFDDÔÖð>Î8[ÞûˆD¢¦˜ýˆtØÓ`½DDMÎÑѱ¥«@Í€Ï3QÛÿïÆñÚ´. bˆ¨]‘J¥l-ÑÆ‰ÅbH¥Ò–®Ùïã ã½Oëà †ˆÚWWWþo£Äb1\]][ºDDDÔDx§÷>­Sksà_"²˜H$‚‡‡*++!—ËÙ׸ ‹Åptt䃈ˆˆÚ8ÞÇÕâ½Oó°kK­=ˆ!"²šT*mϼˆˆˆˆZ-ÞÇQkÖ»&±• QÛÐæ>ã·Å †ˆˆˆˆˆˆˆÈ.1ˆ!"""""""j& bˆˆˆˆˆˆˆˆš ƒ"""""""¢fÒ.gM*((€R©léjQ)))££cKWƒˆˆˆˆˆL ÛgÛvĸ¹¹A¥Rµt5ˆ¨ yxx´t¨µZÝÒU ""¢vN hsð´jíõùh—AŒH$j·O8Q{ ‰ ‰ZºDDDDDdB{ý\Î †ˆÚ1DDDDDö¯½~.o—AŒ@ h·}шھljˆˆˆˆÈ^ñ“ Q3aCDDDDDDDÔLÄ51DDDDDDDDÍ„A Q3aCDDDDDDDÔLÚåôÕöL­VC©TB¥R„B!D"Q»_ˆˆˆˆˆˆ¨-ac'”J%är9î•Uà÷J «Uð+á/ÂÏÅR©” Q+Æ ¦…)•J”••áÚ½*ÄW:#[í©¿@9Ðó^Ƹ”ÂßÃR©"‘¨EêKDDDDDDDÖcÓB ÊËËuo“Û'+]\ì‚Î%•.½‹>žŽpqqX̧ˆˆˆˆˆˆ¨µà§øf¤V«QSSƒÒÒRœ-®V9 ¦˜º²ÕRì®Â¥¢Ã‹é%„››""""""¢V€ŸÞ›Z­Fuu5ò‹JpªX„K5n7rª2HpHœ »Wȸ¸¸@"‘p""""""";Å ¦ Õ`<ÀÔ¥Èô‘”a ‹R;Ž """""""û ¦ hf@Ê,*GR©—¶`ê*ƒgjÜqæ>г¤v`ßn^® dˆˆˆˆˆˆˆìƒÒÌ€ô{q Η‰¢öj‘zhöíYÆ™–ˆˆˆˆˆˆˆì ƒ¨?µKKW @ÓÍ´¤R©°sçNÄÇÇãöíÛðóóCxx8-Z™L¦Ýîí·ßÆéÓ§ñõ×_ÃËK?”Ú²e 222°|ùrí¶^^^Xºt©Þv«V­BNN>þøc½å)))xî¹ç°~ýztíÚÕâz=z´Þy=ÿú׿ÌZo¨®ÇÇÁƒ‘ššŠŠŠ téÒ“&MÂäÉ“–Ž÷ß¿ÞrÝí…B!:uê„   Ì›7AAAõ¶·ÆÓO?)S¦`âĉ6)ˆˆˆˆˆˆÆ ¦ ÊÊÊpý¾Ü¬)¨[Š-gZR(x饗 —˱`ÁtëÖ éé騼y3ž|òI|ôÑGðöþó:TTT`íÚµX±b…Uu_²d .\ˆ'N`Ô¨QÚå7nĤI“´!Œ¥õš2e –,Y¢w,ÝëÑÐúºÞ}÷]\ºt ,ÀSO=…šš¤¤¤ÀÅåÏPÎP™¦Z)i¶W(ÈÈÈÀ¯¿þŠgžy/¿ü2bbbŒîg ›6mBvv¶6(#""""""Û`c%¹\ŽøÌb­rC\[º:fÑ ì›˜«@ôý{îïGGG‹ÊØ»w/Š‹‹ñùçŸk÷íÔ© „çŸ_~ù%–-[¦Ý~òäÉ8räNŸ>ÈÈH‹ëìííY³faãÆ6lÄb1.\¸€ääd½ÀÒz988ÀÙÙÙèqZ¯ëÈ‘#¸xñ"6lØ ×ò&88Øê2ënïîîŽ~ýúÁÇÇk×®Å!CôB"{2þ|ܸq£Þr‘H„C‡i[aÅÅÅA*•"&&2™ û÷ïoîª5»¦A¶ +**ÂUPIKWÅb¥j1V¹£¸¸Øâ}wíÚ…9sæÔ p°páBüúë¯(--Õ.ïØ±#žxâ ¬Y³r¹Üªú>öØc¨©©ÁO?ýµZ 6`îܹpss³º^¶´eË,X°@/„i*Ó§O‡Z­FBB€Ú–@ëׯǜ9s0}út|øá‡¨¬¬ÔnöìY<ýôÓ˜4iæÏŸ/¿üÒ`¹åååX¼x1¾ùæìܹÛ¶mÃÑ£G1~üx|òÉ'jgÛ¾};.\ˆ©S§bùòåÈÍÍmòs¦ÖkäÈ‘ˆÕ~ÅÄÄÀÉÉ ÁÁÁ¶8nJ+V¬@TTRRRZº*DDDDÔÆ±EŒ•œÑåúudùôiéªXÅ÷îMÈ,Ú§¼¼………èÕ«—ÁõaaaP«ÕÈÌÌDïÞ½µË~øaüúë¯Ø²e þò—¿X\WGGG<ù䓸ä“O ‘HPVV†©S§6ª^555¨ªªªwÍ S ­×ËåÈÊÊÒ;_c •)‘H,DÙÁÁÝ»wGff&àÓO?Eqq1Ö®] …Bwß}6lÀsÏ=‡ÒÒR¼þúëXºt)¢££QXXh0 S*•xë­·Œyóæ¨íRV·kÒæÍ›qúôi¼þúëprrÂúõëñü_ýu£Ç¢¶éŸÿüg½ñ¡à«¯¾jÚÙ~z²’‹‹ þÏß çoÆM÷`z¶t•$RÖÀ¯0ewÑ»§Å][òòò×K¥R¸ºº¢°°Po¹@ Àßþö7<÷Üs7nºwïnqÝ£££±wï^|øá‡xã7ô>ø[S¯}ûöaß¾}zÛ}ðÁ 3k½Fvv6ÔjµÑcë2Tæk¯½†èèè÷ÕÕ¡C£¢¢Àÿû_xzz.\ˆ7ß|Ï=÷ ¡P( WWW¸ºÖïB§V«ñé§Ÿ¢¢¢o½õ–ÑcÖÔÔ`×®]øàƒ´Ïß²eË0gÎÄÇÇcôèѵo111pttD\\œÁõ•••øüóÏqâÄ ”••!""/¾ø":uê8yò$¾úê+ܺu ÎÎÎèÞ½;Þyç<ÿüó¸~ý:Ö­[‡ˆˆÀ{gݻwã³Ï>CEE…ÁýV¯^C‡æÍ›‘H„S§N™U—˜˜<ðÀprr±cÇ T*ñØc!&&~ø!®^½ ___¼ôÒKÚ:QûÆ ¦BBBàïï””ü~û2¤~(ð@µƒùã€4M\•~!Á oU †:òóó †8ÕÕÕ(//×~@ÑŒ©S§âƒ>Ðvu±Ôÿýßÿ!++ #GŽlt½}ôÑz³éjh½†æ¿ýÙÙÙèÙ³§ÉmÍ-³!………ˆŠŠBff&T*žþymK…BŠŠ @·nÝÅ‹#** =ô  WV\\®_¿Žo¿ý‰ñnv999P*• Õ.srrBïÞ½‘‘‘Ñès¢¶iÕªUzÝ¢££1vìØ÷[¾|91jÔ(8;;ã—_~Á²eËðõ×_#??¯¼ò \]]1mÚ4ÈårÀÕÕcÇŽÅõë×qöìYm葘˜OOOøùùaÆŒ÷‹Õ1cÆŒÑ{/›ª‹PXÛ»wß¾}èÔ©ºvíŠ .`ݺuX·nÂÂÂàííÔÔT¼öÚkسgÉ÷µ bI*•",, !!•ÈÎÎFZÚi¤Àw¼{¶x ãP]Ÿâ;ªÌú#€Û¨.$îîîpssÕ+W N¡üûï¿C(ÂßßßàþóçÏÇâÅ‹ñÓO?Yu|‰Db°þ­Wc¸»»ÃÓÓçÎk0ˆ±…êêjܺu ³fÍÒäûùçŸë—£! ±zõj\ºt Äë¯¿ŽˆˆüûßÿÖn3`Àddd`ïÞ½xâ‰'LW¥RA©Tê=ppp°áR[rüøq½Çþþþ 1)))ˆÇСCñŸÿüPUU…#GŽ ++ YYYP(ÇÓO?­÷z;v,Ö¬Yƒ3gÎà/ù 233‘™™‰iÓ¦áÎ;F÷Ó´j9tè–,Y‚³ê¢™µ €6Ì\¿~=¾úê+Œ=«W¯Ìš5 éééÈÈȰÙôóDDDDÔz1ˆ±©Tª€²OV®_o¹@Æ¥,]‹n!H\‰ÀÀ@4.€ÑõðÃcçÎxàô§U©Tزe ¦NjtNGGG¼ð X¹r¥ÅÝqš²^5}útlÛ¶ ±±±[ÙÒ÷߯ J©TB&“!!!ãÇ7ºOxx8ÂÃÃ1cÆ ,Y²wïÞÕNåíçç‡åË—ãŸÿü'z÷îaÆi÷S(ÚŸ;wî ¸r劶UJ¥Brr2&MšÔ§JmÀ ŽcJzz:àÌ™3ˆŠŠÒ[WRR‚^½zÁÕÕÇŽÃ>ˆáÇcþüù …ŸŸúôéƒk×®¡¼¼\;¨ull,BBBŒîgm]4<<<´-]úöí Ú÷˜fYzzºU¤QÛÃY“š@çÎ1fÌ<ÒÞ?‡þ§àR–ßäÇu)ËG¿;'1Ay õ ÀÈ‘#dÓTg̘<ûì³HLLDaa!._¾ŒW_}¥¥¥xüñÇMî?xð` :Ô`«¹\Ž’’½/µZÝ,õjŒG}!!!Xºt)~øá¤§§#33GŽÑ~þ¬W÷«ººÚh¹šíËËËñûï¿cíڵسgþö·¿A @,cæÌ™Ø°a’’’ T*QPP 6¸´´ÄÝ»w!—ËqéÒ%899Õk=3xð`,X°«V­BVVÀÇÇW®\A^^ªªª “É0qâD|ôÑGHNNÆýû÷ñÙgŸÁÃà \»v Ï=÷œv aHHHÀ /¼ ÷¡õÀxùå—õ‚" wwwÀ!C°sçN½¯ÐÐPxxx`ûöíxüñÇáåå…_ý .Äõë×Ô¶ŠQ©T8þ<àîîŽ6¸Ÿ5u1ÄÐàÛ– ÈMDDDDm[ÄØZ­Fuu5îåâNùA¨Õj÷‰žjddÜÆíô+M2°¯KY>ïÝ@/w ‚ô„Z ÇòýHϬD§±ðñ ‚T*­7ã5¤R)>ýôSlÙ²_ýµ¶yþàÁƒ1oÞ<³Æ?xúé§qöìÙzËúé§zͶmÛàëëÛ,õ²–X,Æ{g={öàØ±cøê«¯  €É“'k·34Xoxx8Þÿ}ƒåj¶—H$@ß¾}±aý eΜ9pppÀÚµk‘ŸŸOOOÌœ9¡¡¡(++ÃñãDZaÃTTT k×®xýõ× v%š3g~ÿýw¼ùæ›X³f ƇӧOcÉ’%ÇÊ•+ñÌ3Ï`Æ xýõסP(0hÐ ¬ZµJûº*++Cnn®vŒ(..Fnn®^àtÿþ}äææÖëæDí›J¥tïÞB¡ÉÉÉðòò28È´··7þú׿â¯ý+Ö®]‹o¾ùIIIèÓ§¶{Ò‰'pþüy<øàƒÚ ÄÔ~š×¢î4÷æÔ…ˆˆˆˆÈRÿdnyy‚~Ö]&ÔYV÷K³^óXó³¨ÎÏâ:ß]ïÞ½›hnK s(•ÊÚ‹náNÉQä)ƒ NSì%‚`×ip—uAFF~ÏÌkt #RÖ cÑm”ÞF7/WB-#­x?rÇ ß×+Øf ‘=+**B€…Ó³“íÌŸ?7nÜ0Ú5©î¬IÓ¦MCNN-Z„yóæáÓO?Å÷ßnݺáÁDAAÊË˱råJ¤¥¥aÅŠù¡¡¡9r$.\¬^½Úh] Kbb"^xá<òÈ#xùå—ï¼óöíÛ‡Ï?ÿ¼Þ€ÙDDDD탃C€RJŠ:ßÕTu~Vëü Ǻ_ÐYejËêþlŒÍBþ;ºÔj5JJJ]|™e¿á¾úœÁíî©Îâ^ñYx•Ap‡ix ë`ô¼sÉé‡qÛ5÷\;™=ŽŒî H!ÝüáÝ3÷äÿÃÕûëÍ;>"²3Ï>û,>øàìÙ³QQQxñÅáãヸ¸8lݺþþþèÓ§Ôj5jjjàåå…_~ùåååðõõÅ‹/¾¨7¾‘fö$WWWm×¹†ö›>}:nܸ“'Obß¾}=z4zõêe².üJDDDDÖ`‹+)•JÜξ†ä²M(UÝ´h_OÁ`ø»Œ—coàN^ҕθӱ—Ñ@F7€éoooä”\ÄÊQ¦Nµèø^Â!èáþ(ºúöâØÔ&±ELû_|“&MŠ+Zº:DDDDd[ÄÙîÝ»‡+¥ïC®¾gñ¾÷Õçp¿ôœË‚ÑE6CÂ"ѯ²))gq[í‚BGOT jµ>•ùè„ ÀÛ{0rJ.âtÞç0Úº«ÎâRQ*œ%ï¡cÇŽV•ADd¯Ž;=ztËV„ˆˆˆˆÈ1Vrpp@MqÀÍò F£\Š•©H¯üþŽ“0`Àè#—£¨¨ … ‘Hàå ±XŒ[÷Ejn<Ê`]£«¦¸ºÔ´•ˆ¨5«©©ÁÑ£Gáàà€ÈÈÈ–®Q= b¬äîîŽî#-ûTÞ!p(·º¬jÜGš|+2sö£³d":z„ÂÅÁåU÷kà­>ŠjÜot½Ue>߈`¿áÚ©Y‰ˆÚŠ„„”––bäÈ‘prrjéêÕÃ1b)++ ÉÉɸ_ý;žI¸äÛ¤\[Ó0]<¢W¯^ðôôlé*5ŽCDDDDÔ:pŒ²X—.]Ð¥KÜ¿?7n BNz ªÜÎ@èu«¥«àϦ«Ç@ôŠbCDDDDDDÔ’ÄØˆ§§'"##QY†””0¤¥_n±@F­”%]áP4;†"4*” ‘`ccR©aaaèÑ£RRúãVúÈÝÏnˆjšôØj¥‚ÂÞp© ÿÎA™LÖ¤Ç$"""""""ó Þ„,¡V«!—Ë¡*/A¨·+FEMD¨óB¸äÎòà®v¶ý1• ? .YóÞy>†GE£§‹êÂlTTTÀVãáØ£õë×7jÿ’’|÷Ýwرc222ê=ÎÌÌDMm4¥R‰M›6Y½cÏÙ{DDDDDDí[ÄØˆR©DMM Ê ráz>þ¿‡¸¦ …ûB>ãQT;wî Iži ÐoÓ#¨:vìAê%øÛ÷‚4@A÷Á(22ÿ`H¥R¶Ÿ¹uKJJB¯^½Ð·o_¨T*üöÛozwìØØØXøùùµtUíVee%víÚ…éÓ§³QÄ4’R©DYYpó"\®Ÿ@¯ÛçõÖwȾ†Ù×PÜ1.¡Qè8(ee=‘œ<Èê@FUæqi(œkÂd0€Ñèxë:Þ:§È8::B$5úÜÛ‚¢¢"ôë×  ë=ž3gNKVÏ" èÝ»7<<<šõ¸NNN=z4¤Ri‹Öƒˆˆˆˆˆ¨5`Ó¥¥¥Pü~>ç÷× @êr/Hƒ{Aª.@nÄD 4VÈ ÎCéz£Á©¯53 ù»@çáêê §ËGá~, _ÈäBiï‘õ‹Ï¹­Q«Õ …F·&ùùùnöã ¶x=ˆˆˆˆˆˆZ1V*--…ìà—ðýý¸Eû9U!0~;ª.þ¬ dJJB¼¬ËK¯Càž©ØW­”@]é© `‚A¢Ã%égøþÑýÉ>éIðIOBvÖx”Å>nqSPP€øøx”——ÃÉÉ £FBÇŽÿýïÑ£G$''#22¡¡¡ÈÉÉA||>ؽ{7<==áïï¯÷ø±Ç÷ß~‹‰'ÂÍÍ ………8yò$*++!•J1nÜ88;;#33‰‰‰ËåðôôDttt½.:¹¹¹ˆGuu5ÜÝÝõÆ1´¿T*EBBÒÓÓ! Ñ¥KŒ5J¯Ìêêjüøã4hŠŠŠ››‹={ö 00ãÇ7yM7oÞŒîÝ»#''jµ#FŒ@×®]ÖG&“™<‡õë×ãÉ'ŸÄÅ‹ëÕƒˆˆˆˆˆˆþÄ ÆJ•••ð¿yÚêýu™Âà¡ðè?ŽSpïÞäçç£FYµP <áææ†nºÕ0§÷ZÀÔåq#·‡=bQS]]¸¸8Lš4 ^^^¸}û6<ˆÙ³gC$¡´´nnnxüñÇ! Q]]_~ù“'OF‡‘‘ôôt‹ËU(0`<<7†êdôêª[M+%ÍiFFòóóÈÎÎFZZšÑnVÔ¶ìØ±ýû÷Gß¾}ÔŽm”€{÷îÁÙÙ!!!>|8’’’pæÌµc>õë×ÑÑÑze©Õj$%%áúõ먬¬D§N 7779rW¯^$''ÃËËKol)cëwìØððpíxSu)•J$$$ %% …ÁÁÁ5j”¶eš±óùùçŸ!‘H0nÜ8mYIIIÈÉÉÁäÉ“-¾ ÕcÇŽÆíÛ·q÷î]xxx 66999¸zõ*JKKáïï±cÇj§ž×e¬>°qãFŒ?^;Àw~~>vïÞ§Ÿ~Z»ÿ­[·””„ŠŠ øúú"&&FÛÅÔTÙ¦ÎËØµ0Užîó[·n¡¬¬ ...:t(zõê ¶;X,Ö{~Î;‡¼¼}’’‚‚‚í ò¾¾¾f­¯ËÐsuñâE\½zðóóCtt4œMÖÍØµ©[~C×Zó^½sç ê]K""j›ÄØT*EXX*CB´LxÎt*Ï…»²²Yê JpÙ³'nv€®¡½1< ÀàM¶µüýýñØc\÷ä“OÖ[Ö­[7íðòòrܽ[Û}K&“aþüùV•»dÉíÏ‘‘‘ˆŒŒÔ>öôô¬7u²©²yä“gΜ©ý9((HèòööÆÃ?\o¹îùé^s÷Ÿª}lê¼Þ€ÂæÔÇÔ9è>Guë1bĽm ¤÷¸ÿþèß¿¿Ár©m“ËåØ¿?F…ÐÐP”••i[¸ 4555&»Dœ>}ééé˜4iÄb1Nž<‰ï¿ÿóæÍCll,PYY‰x Þ¾ ­7æ·ß~CUUfΜ •J…C‡áÔ©SˆŽŽ6y>!!!8vì˜^Yiii ³ê:˜ªPv'$$`æÌ™puuÅñãǵ!Ó¤I“û÷ïG||<ÆŽköóbŽââbäççcúôépqqABB¾ûî;,X°J¥ÒdÙ¦ÎËе0·®"‘îîîÚ×JJJ :___xzz"44‡†Z­ÖvMMMÅÀÜ·!æìoêšêFÜÐó¯aìõcê½£;&™±ý+++qýúu̘1îîîHHHÀ°hÑ"ˆD"³ëgîµ=vì¦OŸ777œ?{öìÁ¢E‹´ÿ hh½)IIIHNNƃ>™L†ììlH¥ÒëfÎï(s®µæ½jìZQÛÄ®IM@È Ÿü(²£àxØ£8üÿÙ»óø¨ªûñÿ¯{gϾ²B"«HALA "HÕ"‚T”º E\*~ªÖå×íSûý´ÔŸýj]>¥¢P¤®­Šõç‚,Ù ‚²o!!dßf¿÷þþ˜ä6 d’|?ydæÞ¹çžsfÉÌ{ÎyŸž£ÚØ÷L|ª-‰CøÇ›Ñ&ÍæÊk§0`À€°aÎEmm­ù¡ø›o¾1Wøé~¿Ÿ‚‚,D7QSSƒ¦iôéÓ‡ÃAbbb‹¿b7¥iÛ·oçÊ+¯$11‘ØØX®¾újü~?‡îúúý~vïÞ͸q㈈ˆ **Šœœ<Øj{úôéC àäÉ“¸ÝnŠ‹‹ÉÊÊ:ë~h­ðŸ‰={ö$""œnuÙe—G\\ƒ ¢  à´òÛó¸@hêéðáÃIKK#&&Æe²ÿþ3–Ý–vµ§®—\r‰ù\9r$111¡¼[º®›ýQSSCYYYYY­Û­¦>kê\ú©¡p¼v\.¹¹¹¤¤¤àr¹9r$n·ÛœF{6õkKß^uÕU¤¥¥Åرc‰ˆˆh4¥µµý-Ñu-[¶0aÂs¤gÿþýÍ‘;í}ÜÛÒ×õ¯ÕæúR!Ä…KFÄt †#dÊËsøxÏzÝΈâÄÝa9G•5‚ñs"ý2 æÊ>}Î: oG:rä{öìB#%š§ýû÷“™™)¿ ÑM$$$ЫW/–.]JVVƒ6§»´¦²²]×%Å´Ùl¤¤¤˜¹œÂ­¢¢Ã0xçwÌQº®›ù’ÎÔ«ÕJVVGŽ!%%…ÇÓ»woìvûY÷Ckõ¨×0±yýŠg@ÀÜ–ÐèvÃíçú¸@hdbýŠmõ––FYY h±ì¶¶ë\ëêñxØ»w/ø|>*++Í , ÙÙÙ:tˆôôtþýÚ9›úkß(ŠrÆÏ<­í¯çóù€ÓWlOÝêŠ÷)!„݃LMêdiiiLœ8‘Äknã“Qw±œMýÚÒ7n·ÛL¬]¯aß´¶ÿLbccͶŸKÝàÌ}ÓïSB!º Ät‘´´4sé믮¸‹öûá—¾nn ê–†Ò !DW ƒx½ÞF—¦¿:{½^öìÙc&X=qâ6›ÍÌmʼn'¨®®>m˜¾ÝngðàÁ¬ZµŠ¢¢"Ün7yyy¸\.ó t8¸\.ªªªPU•#Fðå—_rìØ1t]§¦¦Æü×Z{, YYY¬Y³†ôôtsäÀÙöCkõh¯Öê“––ÆîÝ»©®®¦²²’•+W¢išy|uu5_}õ'NœÀív³nÝ: à ;;ûŒe·¥]Mû¢µºÖ‹ˆˆÀï÷³k×.¼^¯™{¥á*AŠ¢pÑEñÅ_зo_sÄB[Žmªáó¦-ÇŸ©Ïš–w¶Ó>;Û×Ι^‡Í9›úµ¥o¬V+EEEäççãõzÙ´i~¿ßì›Öö7컦œN'ÙÙÙ¬^½šòòr3wK hSÝZë›ÎzŸBÑýÈ0Š.ONNÕƒsøðHöÜCtÕ)½e†A­#šüø,âÓ2xÑEí^‚Z!:Ã×_}Ú¯ÔwÞyg£Û>Ÿ°~ýzü~?qqq\{íµæàpäÈ–.]J¯^½˜2eJ£ãÇÏ—_~É¿þõ/t]'##ƒn¸!¬í>|8+W®¤¬¬Œë®»ŽË.» ‹ÅB^^ÕÕÕDDD0bÄ’““[m„¦'}ôÑG\}õÕíê‡3Õ£½Z«Ï˜1cX±bK—.%66–þýû7ÊÇ‘œœLÏž=Y»v-•••¤¥¥1}útTUmµìÖÚÕ´/Æ×jŸCèí˜1cظq#6l 33ó´ö 4=éßÿþw£Õ}ÚzlCMŸ7­¦>k®¼³yü›{þœÍk§µ×asÚZ¿¶ô­Ýn§ÿþ¬ZµŠÚÚZRSS¹ñÆÍǸµýMû®©‰'²fÍÞ}÷]4M£G$%%µ©nmé›ÎxŸBÑý(­ß%ìå)­\o¸Mm°­é¥~ýíúë–&×­MþF—””lln>ðùÀãñP]]Muu5ú%'99Y¦ q***ä×Fq^ª¨¨`éÒ¥Ü{ï½æˆ!DËÞ|óM†Úb¸Öö !„8ÿÙíö Ѐ`“¿ 7¹n4¸NƒÛ /4ØOƒmF3Ûš^oIØ‚òíþŸŸÏ‡¦Ñ‚A~?`µZ±Ûí(ŠŠÃéÄáp`±X°ÛíX,–®n‚B4Ò4ø"Á!„BtEQ}‘ Œè*ˆéB†a¸Ýn¶oÝBZr~Ÿ‡ÝbèÔŠT ü€P PTðù|XíNŠ«= »t88ySBt¹†t Ã0/M÷ !„Bt¤úïFõ³ êo†!ß›D—@LÐuÇéS§¨,+Åú±[môJN œ𦅾¨4Æ„Þ8êKRp:è¤Æ8(9ú åUnœqÉdggÕ5 B|§µ€Ñ4Íõ§ëzÖP!„ß%ªª¢ª*6› ‹ÅÒ( Sÿ¹E2¢3I ¦†AMM Ç£¶²‚—«b€ÕŠnèXTCÓ¨(/Åã®Äb±¢é,V g$Š¢bU­Ølv¬ ‹ŠEQPTÀ„è ­ŠëW‘–=ˆÌÌL¬Vy˜…£áˆ—úK0Äï÷£ª*.— ›Í†ªªòG!„Î0 t]'àñxðù|Øív¬Vëiùl":‹|Cï$n·›oö|ƒ]UQpÕz øýÔÖTqòÄA† ËAU@WT‹•í[ד”ŒÃéÄj³as8°ÚìX­6¬6;‹ »ÕNLDN'K(cA%5)½¢€¼Ã‡È=†ˆˆˆ®î!Ä®i¦>ß@ll¬……BÑéEÁb±`±Xp:ƒAª«« ƒ8TU5ï'ÁÑYäSqÓ4ãÇSTX@ldš$¨q×TSpì[  ¸¼†‹^†ÕbÅ@A!!>¿Ï øT1 IIØ `Ó!¨ƒUWP-:_€²Šjü/)ÉôLN‹Šª(¨d%E°kÛfû111]ÝBˆ Tà LýÔ#ÇCDD„‚…BqÞ°Z­ÄÇÇãv»q»Ý¸\.sê’cDgQ»º2·ÛÍ®]»z<ÄFE ©¬(cÇúYóÉR¾Ù¹™Ã'JØs¤‚Ñ9—c±(XT«EÅfµ2}ælþ½c–¨TzöLJï!$ôì‡3²'å•.$ éø5 ÃbeÏclÙ¾]×Q ±SQH‰¶±gçÜnwWw‰âÔ4£i‡¨¨( Â!„â¼ATTMÓÐu]FFÄt’’¾Ú¾ƒÌ^éƒA¼7;7Á‘»‚ŠJ•×àÈ©·ßü#TUCBCúUUťؘ4ùœN'NÄår¡d¿n·›’’ q»Ý”––RQp’@@cý¶o7jŠª `€¡cãСC <¸Ý^]×yë­·X¿~=G%%%…aÆqçwvÉ—®íÛ·óØc‘››ËÓO?ÝéçB„Ôbü~?.— §ÓÙÕUB!„h‘ÓéDÓ4|>Ÿ¹ò¬Œ†A1àäÉ“?NVïÞ‚~NcÝgoRUYf¨ÔúáÐIŽˆH.>ŒÐÔD%´JR]~Å¢0.w̘ñ¹¹dff¡¬ßQQQDEEѧO‡f×®]œ8–ÏžCÅ\Ò/@Q00ˆÔ*9uê={ö<綃A}ôQ|>?þñéÝ»7GŽañâÅÜ{ï½üéO"))©½]xVV®\ÉÀÙ´i~¿»ÝÞ©ç⻬þ£ú_‘‚Á ‘‘‘]Y-!„Bˆ6‰ŒŒÄçó QU]×QUU¦(‰%S“¬°°ÂüÄÅÆ 8øíW|òÎË”–á÷û ‚Ôº}+rݯcæôë±Z-¨Jhõ#‹EAUÕÐjH—ÃÎÏœ¿½þÕÕÕ-ž×f³Ñ¿¦OŸÎ•'p´ðnUQQÔPò)›Š‹Nš_”ÎÅûï¿Oee%Ï=÷—_~9©©©|ÿûßçùçŸ'::šW_}õœË>Á`uëÖñÀ`µZÙºuk§ž_ˆï²¦Ãv5MÃï÷ÝE5B!„8{ÑÑÑøý~4Mk´]¦(‰Ž"#b¨¬¬Œý{÷’™Ñ¿ßÇ×Û×òåçï•”þ£™6ú ÒÓÓIp†ôbFh*‘a Ý6 UÑÉèÁ®ÿÌñã38pà#³Š¢0tèPÒÓÓùÿ–À„Ë…v Vo %%%¤¤¤œSßyçî¹çG£ív»;§Ÿ~šyóæͼyó˜/š¦ j`±1áGó¸uÖm¤§§SZZJzr"UÅÒ0£XPU«ZAÉbQ°Z,ÄÅÆ0 O{÷îmSEQ’{öDUAU@”РÞúÛ¢3NsjIQQqqqÍîw¹\DGGSZZjn{ä‘G2dIIIÜwß}ÄÅűjÕ*Ün7ü1÷ß?ñññôèу;/¿üÒ<6&&†Gy„ÇÍ7ßLYY™èñz½lذqãÆpÙe— Ù¾}{£z]sÍ5L™2…ììlGXÎ}ýõ×Ó§ORSS¹å–[HIIáÛo¿=ë>¢»j¸ª@ýEÓ4ÉÑ$„BˆnÉn·£iZ£Ï6 Ó“DÇ©IaPRR‚­.¡S0àÝ×þHUe¡Xª‚Åfçê™2mÚ4E¡¬¬ Ý[ƒ‰EU1BóB…: *(Ša†b (0ë¶YÜõ“XöÞ¤¦¦ž±Nš¦Q^^Fd„:ÀP0tƒ=»¾Âçóu;8uêQQQ§í÷ûýÔÖÖ6ª[ÃiTŠ¢0hÐ òóóÉÏÏG×u~úÓŸš÷ ƒ§-±Ýðø””œN'€õë×ãt:éÕ«^¯€Áƒ“——ǨQ£Ìã Ô¨Ìpœ»²²’/¾ø‚¯¿þššš ΩO…èî~X‘a¼B!„è®êõ6ül#ÉzEG‘@L;éºNiI Iñ ‚ ŽâØ‘C5 E M ºâ†¹\ýõ(Š‚a”•–’Êc(†Žn„‚>Ÿ—ȈˆK§ºŽ¢ªDº<|ÿ=,ÿðnŸýc3ŸIs|>VÍ‹¢ÚQtE1°X,X­–srKLL »ví¢oß¾§íÿöÛoQU•^½zµX†ÅbÁétš+ª¼üòËÄÄÄ´¹ ß W¯^MEES¦L9í~óçÏÇb±4[F{ÏíõzyðÁ;v,³gÏ&99™ùóçË0FñVÿÁE>°!„¢;ªÿ®¦ëz‹ß#„ùé²ÊËËñÔºÍî'ÿx ¯Ï‡ÏÄç’rqSo˜ŽÕŠyUTTP|2‹ ´¨ŠŠ‚n”——òëÇç‚jÝÔ$UQB+(© V«•ËFŽäŸ_LAAÁ‡ÉUUUc×QQBS’ê;Á †×륶¶öœ†ÙM:•·Þzë´Ñ#º®³dÉn¸á3‘oYY}ôQ£ûíÝ»—ÌÌLzöìIDD6l8ë:ÔÔÔ°eË^zé%V¬Xa^Þ{ï=TUeçÎ-ÛÞsïÛ·ÊÊJî¹çúôéCDD¤¸¸øœÊ¢» ÷ÐÝÍ›73räHž|òÉÓöÍž=›>ø ÅÛ"]×Y°`W]u7Þx#‡âÿ÷­÷]è!„¢£Ét$ÑY$ÓN‡¾YYf–횊lVÝÐ hÓgþ؜ңë: п.o()/(‚Ö|þ!5µnÖ­ûUµ ÔcÔP0ƪ*86~ÿÛ_ñÜÿ@eee³u ìýöâ"#PÕPn½¡5êåååç4‚cÆŒDEEñÀ°qãFJKKÙ¹s'O<ñÕÕÕÌš5˼¯Ãá`ïÞ½ìØ±ƒªª*–,Y‚ÛífܸqX­VfΜÉÂ… Ù¶mš¦Q\\̾}ûÚTµk×’˜˜HÿþýmeèСäååµxl{ÏOmm-Ë—/§ªªŠ5kÖ¡ßeáúÐòÉ'Ÿ0dÈÖ­[‡ßïK™áòòË/óÔSOuê9?øà¶nÝÊ[o½ÅÂ… éÝ»7+V¬`Ïž=Z!„âB'ÑYdjR;øý~N—Ý]Ójìv :®è\Ô PPUU… ‹¢¢+uS’tƒò²6®ý‚`0ÈÿùÃ&NÈ åŠ©Ïc芊U´´TTo%ÇŽ#&&¦QNÃ08rä—dĆ"0 ¨(ІnԺݸ}çþÅÆårñç?ÿ™%K–ðúë¯sâÄ 2229r$·ß~{£ek###ÉÍÍåù矧´´”Aƒñì³Ïš£ƒn½õVìv;/¾ø"§N">>ž™3gž\iΪU«ÌÕ’š=z4o½õ=ôP‹Ç·çÜÜsÏ=,^¼˜E‹qÙe—qÅW´zœ¢u@€U«Vñâ‹/òÀ°aÆ_ëßÇŽcРA$%%™ÛÞyç.¬‘Bâóùðx<ø|>€™ì6œS•CéTl6‡—ËeŽÀ¢»’@L;øý~¢£¢Pëõª UÕüUUÉp™¹”«a“™ž‚¡ë¨uIy+?~ׇn(¨†Ÿ¿XË”Iã0 PPt̤»v«…ÿzä§Ìyð~þöæ;¤¤¤˜u:zô(qF%6«C70CÓ1MÓÉ[½@#11ñœç>ÚívæÌ™Ãœ9sZ½ïˆ#xú駛ݧ( 7Ýt7ÝtS³û_zé¥Ó¶-_¾€?üá-žóÆoäÆol±Œöž`æÌ™Ìœ9³Å:!Î͆ ˆeРAŒ;¶Ñõgkýúõ¼òÊ+:tˆ¤¤$&NœÈ<ÀO<Ëåâ¿ø…yßÅ‹³sçNž}öÙ[²d ¯¾ú*+V¬`úôé<þøã^zé%>ÿüs|>¹¹¹ÌŸ?ß|ÿŸ={6ãÇgÆ ìß¿ŸÞ½[`  IDAT{óÄO°sçNÞÿ} 9r$O?ý4ñññÚð»ßýŽüã|üñÇdgg³lÙ2fϞ͌3øáØlÛ[«SKmB!ÚÂãñPUUe.dG“4 Æ´'0S¿2£¦…R,TVVât:‰‰‰9cÎL!Îgˆi‡`0HmM-‹ 8N"b)Ï?ŽAzï¾f°£´´”Ä(ª¢`Ô­”¤k†nPUYÁ¶Ík h¡2C†Å“º/Jh%EA×UEbc¢¹ñšñlÚ´‘k®¹»ÝZ ¨²€È„ÈP¦o…Ј Ý Öãå³/Ö`˜Æ…â|òé§Ÿ2qâDrssùõ¯M h4Ú®-ªªªxôÑG™?>W_}5ÅÅÅæÊf“&Mâþç}H\³f 7ÝtÓ›={6µµµäççóÌ3ϘçZ°`,Y²„`0ȯ~õ+^xáüq ”ìå—_fÉ’%¤¤¤ðì³Ï2{ölfΜi•}ôQ^|ñÅÓ×O>ù$‘‘‘TTTðË_þ²Íí?SÎÔF!„¢5¥¥¥TWWWOlÎ i¼­½¼^/^¯—èèhÚ]žMrÄ´ƒ®ë¨ŠŠÕbÁépp㬹(VMáø‘ýøý~t]§¼¬ŒØèȺ¼0uoHJ(7Ìòw^Çãñá êè†ÁÔ›ïf̘1lüjw(—Œ¢šCòUAµ(Ø­¦M›Æ x†‚‚Ž> U¤&F£(* Ö½É)øƒA¾Þ½›âòJ{ô0§ !ÄùÂãñ——gb¾ÿýïزeËY—U\\L àŠ+® &&†ììls)û1cÆàñxؽ{7J,¾wï^ÆwÆãšS[[Ëûï¿ÏÏ~ö3HNNfîܹ¬^½Ú¼O\\O=õƒ "!!Ûo¿€»ï¾›Þ½{Ó»wo®¿þz¾úꫳnç¹ÔélÛ(„B@è»ÏÉ“'©®®6WÒ4¨¨(RRRÈÌÌ$;;›ììl233III!** MÓÌÕ!¼yXª««)**’ÕKE·#߯ÛA©ËÁb±¨:Øí6F\~©éY=z„[6áñxðz½X „VHª‹}éuùaÊËJÙ¹}U^Âr ¹£nÜ8Ö®]Ë!CÈËËãòË/'22òŒÇ5çèÑ£èºÎÝwßmþ ©­­mt¿†¹¼úöí €Ûí6ÅËÊÊ:m5ºsÕZζB!À©S§ðxŒáÇ¡ƒ¨ ¡©Lº¢*蚎¦Ôzýüë£)©¬UaÚôq:Þ?-ågBˆæ|úé§”••1nܸÓö=õÔSg•×JUU^zé%¶mÛÆòåËyôÑG9r$Ï>û,'NdáÂ…Üwß}¬Y³†I“&µé¸¦¢££Xºt)±±±gÛdS8“¶V§³m£BQZZja4M#99¹Íÿ÷¬V+ÉÉÉ8N:Õèÿy8ƒ1eee2MIt25©§Jб¨ ‹‚EU±Y­ÄÇÆò¿¯¾AßÞÌÿéÃôˆBUsŠ‘‚‚n”—³uãªÜAœ‘±\9n 1ÑŒ¿"‡Çº‡ýûöPæRÖŠ¢ * ª‚¹üuhê’Z¦Z­›‡©*f¤Úëó³mû6>[µ– ·ßq/ èê®BˆFª««Ù°aûÛߨºu«yY±bªª²mÛ¶s*wĈüêW¿bÑ¢E¬Y³†S§N¡éI'NœàðáÃìØ±ã´àOKÇA(ˆ^/55•ÈÈHsûóA[ët¦6 !„õÜn·9élƒ0 ÅÆÆ’œœl®¬៦Ô0y°ç3 Ä´ƒÃá ©GT‹UQ±X,X-*6«…Ä„8/ý;ÿuÿ=ôÍÌ@U”CñÁŸ¼ÿwܾÇK|üõÅ?aµ¨Ø­V®œ0‘+üü‘HMMåí}u‰®T¥>ø¢`QC«TƒŠÄ@]ÆÀrðð^{})_€´^™Ü4cv»½ë:M!š±råJzôèÁÀm‹‹ãÒK/eåÊ•æí'N˜ÜšÞ®WUUŇ~È©S§ðz½lÛ¶ —ËE\\ZýmìØ±,X°€ï}ï{ætÍÖŽëÙ³';vì °°ǃÕjeöìÙ¼ð lÚ´ MÓ(**bÏž=Ú_M5ì‡ÖêÔZ…Bˆ†ªªªÌ|0111íKLLŒ™7&ܪªªÂ^¦A1픑‘Á'ŸŽÅ¢†F½XT,–Pò^»ÍÊM3gÖÍ…TCq%4¦ª²‚M_®¦¢6@TLÇ Å¢†‚9‘N}ü Ðýä­^IrzZU vQÕÿeB5äÁÀ0@Ó üÁ Ç Nò§ÿû©t{±;£xà៙¹ „â|Òpµ¤¦rssYµjº®së­·òÉ'Ÿð補v»^uu5+W®ä¶Ûn㪫®âý÷ßç÷¿ÿ}£@ô¤I“ؼys£ó¶vÜu×]Ç%—\ÂÌ™3yòÉ'¸ë®»øñÌÿøGrss¹÷Þ{ùöÛoÃÚ?­iÚgªS[úF!„€Ð”ÇcbÛ]fbbb£¾áãõze%@Ñ-„oRzÛËSZ¹Þp›Ú`[ÓKýþúÛõ×-M®[›ü.))Ù®¼a¬\¹’Ér±Z,¡å¢ÑëVÖ¡þÍÅ0ÐИÛíæ/Ïý–µëVñõѶlXC|L4†¡c蚤Öíåç=Â×ûñò¢7Ø¿çßL8ÅÐÍò #´j“¡zhÅ¥@0ˆÇëçh~\°€üâr4îä n¾ùæ°æ!â|UQQAfffWWã‚VÿZÿÁ, R]]M¯^½º¸fmwìØ1f̘ÁŠ+$¹BÑŒòòrÊËË ƒÄÄÄ’’–rOžæÞ{j(VS·*RݪGuU†B¤ <ó+|† «Å À( FÝýC£mTU¥gÏd’“’°Ø]Ü÷ÓǸå–[$s9zô(|ðK–,áí·ßfëÖ­’¨¬!Ã0X¼x1Ë—/ïÐóÑ?~œ}ûö1~üø®®ŠBqÞª±¢ë:V«5låZ­V³ìpëèÏÖB„ƒbÂè²Ë.Ãj·óÇ^ªáòŸ ÃÀï÷óáÛ¯ãõùq{ƒTTUÕ%Ù­ƒbf¿ÑuƒêÚZÞ{s zÐÇ©üÄÆÄðÚ??GQêß°Ôºd½ÿ ܸv~þøÏ¨(+#''‹ÅÒE½!šÚ·o[¶laܸqÌž=›k®¹†¢¢">ÿüó=o~~>©©©”——Ë’~BÔÉÈÈ`óæÍ$$$tuU„BˆóRýh•ŽµÒ´|!¾k$f©©©ÜsÇìP>Œº Œ¦ëTT”óåš4›M%ïËu ªêâ/uCg üŸýë}JË+ê:‘¤¦¥1ôÒx¼~TE©{ô”ÿcT«E%µgÆ_>œU+Wâõz»°7D=MÓÌÕYâã㈎ŽfòäÉQXXØaç>pà]t>|¸ÃÎ#„B!.,ªªšÁ’`0¶rƒÁ`‡aêì q> ßø2A0¤¤¤„‹3Ó1 ÅPÐÜÇ€ßϲ¿þ ׇ®8¬ sîý }ã=î¾yj(˜R÷F¤é:Å¥%|¼üŸøº7Ïy˜ôôtzôèÁßßþ;wMŸˆªƒ¡è (¨€®(X­{ôa¦Íú WN˜¶UL>ûì3ÒÓÓñññäææÁ«¯¾Jß¾})**Â0 ÆŽK¯^½¨­­eõêÕ”——£i_|1999,[¶Œ~ýú±wï^.¿ürú÷ïÖòëUTTàt:OËànµZéÛ·/'Ož$555¬í†Ðs2??Ÿ±cÇ¢( _ý5ƒ 2ÏßYíB!„ÝÍf3ØõxLii)‰‰‰}ú4;"§¨¨ˆØØX3?Cff&Û·o§¬¬Œ=z ( IIIôìÙ“˜˜Š‹‹ñûý¸ÝnÖ­[„²¢kš„òäÔ8ÉÎÎfÕªU@hxb0dÛ¶mÔÔÔàv»©­­5ë2`ÀóúÉ“'Ã^>„VÖª©©i¶_kkkÍjál7ÀÊ•+Ñu¢¢"ó¸Ã‡3pàÀNm¿B!„è^EÁår™“úÜíMÚ 9yò$N§³C‚1-ýø)ÄùD1abA-ˆ¡¨(†ж¡Ñ0EE|¹fAMG× â{¤1n|nhÙjUeÜø\ ‹KIŠ‹¥ÖífÑ+ÏãñÐ vy.W\qE£sÙív† Iie ±‘.‚šÏ ¬²Š¿¿ý>ÏÛ„Û$+»S¦L!===,opõ£* 8~ü8—^z)µµµ:tˆÊÊJó }tt4·Ür GeïÞ½lÞ¼™éÓ§7ªƒ¦iØíöFåsNgÓù¢ªªb±X°Ûí¤¤¤píµ×ž±® ßÔ‹‹‹Y³f cÇŽ%!!ŠŠ sY»¦ýîòëÅÇÇãñx())1- Ô=z”‰'†½Ý>Ÿ»ÝÎm·Ýf&mÞ·oûöí31Õ~!„BÑý8N\.@‹ÅBAA½{÷nW™X,TU {ÆétʈÑ-H&£0q:ôè‘Ì«K–±c÷·€nø|~þ¾è<þ@hê0ãîù¦mdddðñê øA¶mÙÄÞýû ê€baæmw5;°_¿~|¶a7þ€FqY%ïÿë3~òð“|¸b=VW4÷Ýÿÿõ_ÿÅôéÓúÔ\vv6»ví"::«ÕJvv6¤¸¸˜ÔÔT 4íÈçóÑ·o_rss©¨¨Àï÷£ë:_}õ>Ÿ””ŠŠŠ8uê………èºn&²…PР¬¬ŒÚÚZ’’’HNN¦ªªŠ#GŽ¡ÀEk_úËËËq8ôèÑMÓ8yòd‹«I…³ü†íµZ­Œ1‚+VPZZ „%«V­"--ÍÌÎv:tˆŒŒŒFmÍÌÌääÉ“-&qîèþâL*++Y¶l¯¿þ:G娱cæóïùçŸïâÚuœ ¹mB!º7EQˆÅb±`±X(,,4?Ëž‹ÒÒR ÍòÂ="&&&&le Ñ‘dDL¥¤¤pã7²uëVþºôM®Î‡ÏSͦëÐ  …´¬§p±ÙlŒ•êõ›Y¼ðe4CÅ@eÚm÷2bĈfÏe±XåþúÖlÚ°‚“§Ð ·Þv;ƒ bôèÑòe¸wïÞ|öÙg\}õÕæpÅøøxóM´¼¼œ-[¶P[[‹®ëŒ9‡ÃÛífçÎôêÕ‹¤¤$®ºê*Ö¬Yƒ¦iDEEñƒü Q–óüü|¶oߎÃá`òäÉf@éšk®áË/¿dÛ¶mØl6† Bß¾}[¬sVVÇçÍ7ßÄét’’’Òb6u›Í¶ò½^¯Ù^‡ÃÁСCq8¬^½ǃËå¢_¿~ 6¬Qyáj÷:th£m‡ƒ”””Ó¦'uDû…8[›6mbðàÁ 6 MÓX¼x1?øÁHKKëêª !„ß9õŸí#""ˆ¥¬¬ ›ÍÆÞ½{¹øâ‹ILL<«òJKKÙ»w/N§³nåXÕŽ`Ltt´LKÝF¸³#µ¥<¥•ë ·© ¶5½Ôﯿ]ÝÒ亵Éßè’’’½^½ÏçcÆ ”——süè!N8̉cG™uÏO¹êª«š}³Ù¼y3¥¥¥,äÔÉîœó“F#%šsðàA8@uu ñäääÑQÍê4ùË_¸÷Þ{»ºî»Úîp«¨¨0s‰ŽQÿªë:𦠩®®n×*mo¾ù&&L 99ù´}Ï?ÿ<=ôÐ9—}6òòò2dˆ™Ãª£…»m]!„®ú%¦5MãĉTUU™£ßÓÓÓéÕ«W«£ïëWñ‰‰‰Lš4‰ˆˆòòò8xð ‹…ŒŒ &L˜ÀG}DŸ>}2d;vìÀív3zôèfï¿uëV xóÍ7ÉÎÎfÊ”)Íž/22’?ÿùÏôëד'O0zôh8@QQ‹…«¯¾Úœ øùçŸŸÖæ±cÇ2pà@t]çóÏ?§  ]׹ꪫÌDˆEEE¬Y³†ÚÚZœN'&L gÏž†Ñæú !„í¥( V«•´´4Š‹‹)++CUU€¹‡®ëŽ©_tÂáp`³Ù°Z­æß†£MÚ#::ZF€ŠnI1â¼ô]žó]m·ãÆãĉLœ8ñŒ¿j¹Ýn>ýôSf̘All,›7ofݺu\|ñÅrçw¢( Á`€ÁƒóÕW_™˜½{÷rõÕWsôèÑfï?räH:ĸqãHIIiñ|“'O& rùå—Ï×_ÍÇÌwÞIll,;vì`Íš5Ìœ9“¬¬¬V_ÛÇgÒ¤IìÝ»—/¾ø‚;_ßχ~È´iÓHJJâСC,_¾œ;üüü6Õ_!„h¯†£b ´¸ƒË墼¼œÚÚZ‚Á š¦¡ëº9uYQ3Sx©ÿ[?©aÙgËét#9aD·%!„ÝFAAµµµ¬Zµ ­Ò¦iñññÔÔÔ°jÕ*²³³Í%™™™|ñÅx½^ü~? X,–fïßÖóAèiýJoýû÷gíÚµæèþýû³eË–6µIUUsYûþýûóé§ŸšçŽ7÷õíÛ×Ì%ÖR{…BˆŽÐ0£( 111DFFâv»©­­Åãñ˜ÿ#ë§×'ã­È4MÎÛÖ L}Y6› ‡ÃËå’%ªE·'!„݆Ãá --n¸á´}wÞy'‡b÷îݬ[·Ž[o½UUéß¿?Äëõ2`Àbcc›½Ó…g:_CMW©kx»µ©I 5ü`ªëúiÓNý~?ªª¶¹þB!D¸4ÅR‰ŠŠ"22Ò ÓpDL}¥aP¦½#a„¸PH F!ÄyOUU‚Á )))TVVrèÐ!úöí‹aƒAt]' rÑEѧOþò—¿àóùp: 4ˆuëÖáõz™:u*ZÙ®¥û»\.ªªªHIIiñ|6›­ÍuoËԤ椦¦òùçŸsòäIRRR8qâ†a˜˜Øæú !„á¤(Êi#^ê0MW¥m:òE‚0Bü‡b„Bœ÷.½ôRÞzë-®¿þz¦NÊêÕ«Ù¸q#v»aÆņ ¨©©AÓ4rrrp:$%%QSSÓh.yYYY‹÷1b«W¯f×®]L›6­Ùó]tÑEÞf—ËÅ5×\Ê+Ð4¨¨(¦L™‚ªªgUÿp$CB!ê5 ¤Ôßn.s¦ÛB|—…ûÕЖò”V®7ܦ6ØÖôR¿¿þvýuK“ëÖ&£KJJ66}£B\8***ÈÌÌìêj\ÐêßCu]GÓ4‚Á ÕÕÕôêÕ«‹kÖ¼?þ˜þýûÓ¯_¿®®ŠBqAj-Óäçç}ÚÊNݱ-݉ÝnϪ 6ùkz“ëFƒë4¸ÝðBƒý4Øf4³­éõ–„-ˆ ?“ !„¸ ù|>òóóÉÊÊêêª!„¬†S‘$p!Ä™I F!ÄíÛo¿%++ë´„ºB!„BtÉ#„â‚6lذ®®‚B!„&#„B!„BÑI$#„B!„BÑI$#„B!„BÑI$#„B!„BÑI$#„B!„BÑI$#„B!„BÑI$#„B!„BÑI¬]]^†a (JWWCñUVVÖÕUB!„â¼&˜ „¦ix<***ˆÅåraµÊÃ+„è\ ]]!„Bˆsâv»»º â;B¦&]ªªªøûßÿÎøñã>|8C† áõ×_ÇãñtuÕ„B!„BÑ€bº1Ã08zô(?ü0óçÏçØ±c@(’ûÔSO±{÷n4MëâZ !„B!„¢žbº)Ã08~ü8óæÍcùòå§í×u/¾øŸÏ×µB!„B!Ds$ÓMòÓŸþ”Í›7›Û®½öZ¦NjÞ.))Á0Œ®¨žB!„B!š!˜n¨²²’çž{ŽuëÖ™Ûî¿ÿ~–.]JII‰¹-!!U•‡X!„B!„8_È·ôn&°víZþö·¿™ÛæÌ™Ão~óŠ‹‹Ù¸q£¹}ĈØíö®¨¦B!„B!š!ëw3EEEüâ¿0“ðŽ1‚ßýîw(ŠÂòåËÍí <‹ÅÖó?óÌ3¬Zµ «ÕJzz:×]w7ÜpC›GßÌ™3‡‰'róÍ7‡µnB!„B!ÄùN1݈ÇãáwÞáøñã¸\.^~ùe¬V+š¦ñÊ+¯˜÷ÍÉÉ!..®Cê1eÊæÌ™ƒ×ëeëÖ­¼øâ‹x<fÍšÕ¦ãGM¿~ýÚ|¾×^{‚‚žzê©s­²B!„Bq^@L7RRR«¯¾jÞž7ožÐøÇ„kQ¯ IDAT?þÁ°ÙlL:—ËÕ!õ°ÛíDFFÉäÉ“©©©aÙ²emÄÜu×]R/!„B!„â|'˜Nä÷û ƒ†a^6› EQÌ‹ÅbÁf³5šêS?¦¨¨€èèhæÍ›g–»`Áó¾ãÆcĈ–¨wèСTVVâñx°Ùl,\¸7RRRB=˜5k“&M2ï?oÞ<¦L™Â5×\cÞ¾âŠ+غu+ 55•|!C†ðÖ[oñÆo——Çu×]ÇC=Ô)íB!„B!ÂM1Ì0 <ÅÅÅ,Z´ˆO?ý”¢¢"Ün7º®›÷SU»ÝNRR999Ìš5‹¡C‡ât:±Ùló׿þÕ¼ÿO~òâããxöÙg†¹ýöÛIHHè´6–––’˜˜hŽÀIOOç׿þ5‡ƒÕ«W³`Á @FFF³ÇWUU±hÑ"^xáRSSyýõ×ùÍo~òe˘9s&n·[¦& !„B!„¸ ȪIÈëõòÕW_1mÚ4FÅK/½ÄÁƒ©©©i„Ðu¯×K~~>ï¾û.Ó¦Mã’K.áá‡æÛo¿åí·ß¦¸¸€˜˜s4ÌW_}ÅsÏ=g–3yòd¾ÿýïwÊhMÓ8pà‹-⦛n2·_ýõôéÓ‡ÔÔTn¹åRRRøöÛo[,'&&†Gy„ÇÍ7ßLYYùùùÞ!ÄùgóæÍŒ9’'Ÿ|ò´}³gÏæƒ>hñö…¨ig̘Á믿ÞâþŽÖôü¢u­=FÝåyì÷û9rd—ý×s¯«Û!„BȈ˜RRRÂÿøG^{íµÓ‚.måv»y÷Ýwyï½÷­~4wî\âââp»ÝÌ;—`0„VJš;wn‡†yï½÷xï½÷P…””n¼ñF¦Nj¬ä‹/¾à믿¦¦¦†‚‚|>ßËTżž’’‚ÓéÄãñtX„ç¯O>ù„!C†°nÝ:ü~?v»½««dzùå—ÉÏÏç™gžé²:äææ2`À€ïìù»ÚùðènΥϚ;¦«ž{ò˜ !„7 Ät€‚‚î¾ûn¶nÝÚh{=¸öÚk?~<ƒ&99—ËEyy9¥¥¥äçç³víZÖ®]Ë×_mp Ã0ƒ-±±±Üwß}üìg?cß¾}@h)é¹sçò½ï}¯ÃÛ÷ƒü€ûݎÍfk´Ïëõòàƒ2vìXfÏžMrr2óçÏ?ë`TÃÀŒâ»#°jÕ*^|ñExà6lØÀøñ㻺Zç•ú‘ßÕó‹ï.yî qþñù|x<|>@MÓ0 #¬ŸåEAUUl6‡—Ë…Ãá[ùBt Ä„YQQwÝuÛ¶m3·ÅÇÇóÔSO1kÖ¬fß4zöìIÏž=4hW_}5Gåµ×^céÒ¥”••™÷;w.±±±¼ñƼùæ›æöiÓ¦qà 7œéõ+&5gß¾}TVVrÏ=÷˜Ûûl‹Ç-Y²Ä\¹nÅŠLŸ>Çœ@ ÀK/½Ä矎Ïç#77—ùó焦Œ?ž 6°ÿ~z÷îÍO<ÁÎ;yÿý÷),,däÈ‘<ýôÓfî¯3™={öi#óòòX¼x1¥¥¥ <˜ŸÿüçôîÝÛ¼ÿm·ÝÆG}Ä¿ÿýoþð‡?ð½ï}^xµk×rêÔ)zöìÉœ9s¸öÚk§éq—_~ùiço­ý-õgkÎTî_þòV­ZÅÒ¥K±X,¸Ýn~ô£1wî\®¿þúVë°lÙ2þùÏRZZÊ%—\Âc=FZZ“'Oæ¿ÿû¿5jß|ó sæÌáË/¿lö9ðÈ#´Ú—­=FgÓö¶öi hÓcœ››ËÆÙûÿ³wßñQÕÙãÿ_÷ÎLf&½éMš( QjèMŠ~ ‚²¬ºþXý®eÑÝÏb]l ¢¢¢ ²–U±!m))†Ïî •–6!¤0Éd23÷÷Çd®é…Lóä‘GfæÞû¾ï{o¸™œ9ïóNI¡M›6<øàƒôíÛðA~õÕWÙ¸q#n·›¡C‡Öx½òÿ¦®sVÓÿµê~ökºŽåÕvu§Æ\s!.eÅÅÅTÈ`×4­ÂãòÁ˜Æf4MÃívãv»q8œ={‹ÅBhhh“Í+DS“@Œ²lÙ² A˜øøxÞ{ï=bbbÔV‡X²d ;wæÞ{ï 88˜… røða|ðA}Ý«¯¾š;ï¼“ØØXÿH#DDD`·Ûùâ‹/>|8ÉÉÉ€7Øt¾bccùꫯÈÊÊ",, ‹Åâ¯î !.2›6mb̘1€w£>ªÏ.×<ðÀÜwß}Œ7Žììl}ˆäرcyúé§+¼Iܹs'3f̨u»¹sçb·Û« QXºt)ùùù¬]»—ËÅ’%KX¾|9=ôùùù¼òÊ+¬]»–¸¸8ž{î9æÎKbb"Ï>û,<ð/¿ü2þóŸ|ÎRSS9|ø0o¼ñ±±±¬\¹’… ²~ýzý~ùðóxñbî¹çÚ·oÉd¢]»v,[¶ ‹ÅÂæÍ›Y²d W]u:tÐÛ®¼]uj;þÚÎg]jkwþüùlݺ•üãÜzë­¬ZµŠ+¯¼’o¼±^×díÚµlܸ‘Ç{Œ¨¨(’““ë«îg ®sYŸkäïsZŸkœŸŸÏÊ•+yûí·iݺ5¯¾ú*=ô_~ù%&“‰+V°oß>ž{î9¬V+«V­ªö¼œÏÿ›ÚúVÓ6•Õ÷:Övu§ó½æB\Êrrr(,,¨0lu|³ÂV~­±‡ƒ :I‰þ"ÅzýÄãñðÓO?±fÍýµøøx>ûì³a|Ün7+V¬ÐŸßqǘL&æÏŸ_!úxÞûð·víÚñÛßþ–5kÖpÛm·ñí·ßÖú Z}Œ3†^½z±`Ážxâ ?õTq±)..&))IÄ 4ˆÒÒRöïßßà¶²³³)--eèС„††Ò¥KzõêÀ!C(..æ‡~ 77—””† VëvÕ±Ûí¬_¿žû￟ÈÈHbcc¹óÎ;Ù±c‡¾Nxx8<ò½zõ"22’9sæÞ{zûöíiß¾=7Þx#‡jðq‚÷wÅìÙ³éÛ·/­[·æÿ÷Q…­[·êëL:•›o¾™nݺéøÏ˜1ƒ.]ºÐ¦MæÏŸOëÖ­õsRÛv 9þ†žÏú¶k2™xä‘Gxýõ×Ùµk_~ù¥>³^]ÛºÝnV¯^ÍâÅ‹éÙ³'±±±Œ?¾QŸªÖu.ësšâœÖÕ/ßÏfïÞ½‰ŒŒdÞ¼yäääššŠÓéäÃ?ä‘G¡[·n´k×®ÆÙ Ïç:×çç¯6õ½Žõ9ŽóéKcû/DKäñx°Ùl¢i·ÛMpp0qqqtèÐ.]ºÐ¥K:tè@\\ÁÁÁ¸Ýn<¬©)hs> ÉÊÊ:ïšœB4Ɉñ“³gϲxñbýÆÁ;ï¼Ó¨7v/¾ø¢>-µÅbá®»îâ·¿ý-?ýôS…õ¾ûî;&NœÈ|@×®]›tƤúL!˜˜HbbbËW®\Yës€/¾øBl6›yì±ÇÐK!DK”””„Õj¥}ûöz°¹OŸ>lݺ•Áƒ7¨­N:ÏÌ™3IHH`êÔ©úP³Ṵ̀aÃøæ›oèÝ»7III 0€   Z·«ÎÉ“'ñx<ÜqÇú'|.— »Ý^a½ò÷åÎ;Þ‚ì¾Oñ:uêDQQQƒŽÑ§cÇŽtéÒE@ß¾}9~ü¸þÚ5×\Se»üü|¾þúk:Daa!iii8Ž ëT·]yuCÏg}ÛïÏÆøñã¹÷Þ{yôÑGõ¬Ðº¶MOO§¨¨¨^¡úªë\ÖçÕ÷ØrNësËÿl¶nÝ«ÕJQQiii¸Ýî Åqkzq>×¹>}«M}¯c}Žã|úÒØþ Ñ>}šââb=Jdd$FcÕ?)F#F£‘   "##ÉÍÍ¥  UUõ{›¿êÈ8²³³•/Ä…&?Ð4ÜÜ\}Àƒ>ب›Áo¼ÁSO=¥?/))aúôé>|X-&&F¯½’––ÆÄ‰ùðÃéÓ§O…Y–„¢%Ø´i¹¹¹ 6¬Ê²Gy¤A÷5UUY¹r%ä‹/¾à >>žçž{ðfÚ½þúëÜu×]ìܹ“±cÇÖk»ÊBBBx÷Ýw kè!ëü] <  ÖÙ¦Š‹‹™7o£Fâw¿ûqqq,X°·ÛÝ ýÔuü =Ÿõm×ÇÈ*ÿ¡G]Ûž;wð~²ëß•ç{.kºFþ:§çÛ/ßÏbii)ÇSç< ½Îþøù«ïu¬ë8Χ/þúÿ#DK’““£aÜn7±±±õþ½g4‰Ål6súôé ÿgýŒÉÍÍ•aJ¢Å¡I~PTTÄ{ï½W!fÞ¼yçÝÞO<Áƒ>X¥àUù Ìœ9s8xð`•i£§OŸNrr²¤ç !Z”ÂÂBöìÙÃ;ï¼Ãô¯­[·¢ªj…Ú[ Ñ¿–,YÂêÕ«Ù¹s'§OŸ¼Ã“ÒÓÓ9~ü8ÉÉÉU‚?5mÞ?ì|®¸â ‚‚‚عsçyõÏòòòøå—_ô皦ñßÿþWϼ©Î‘#GÈÏÏgÑ¢EtîÜ™ÀÀ@Ž=JVVVƒö]ßã¯í|žo»'Ožä£>bÑ¢E<ûì³z½‚º¶mÓ¦ ‡#GŽT»ÜjµVÉT©ü;µüÏ@}ÎeC®‘¿Îic¯q»ví*|ÈT—úþ¿©oßÊoSY]×±¾Çq>}ñ×ÿ!ZŠ¢¢"}8RCƒ0å………«Ï¬þ¦T¾|ƒ3 ÄøÓé¬P`ܸqç=¥ÚÛo¿ÍóÏ?¯?ïÒ¥K•ú/:tàÙgŸ%88˜7ß|“ßÿþ÷ú2»ÝNbb"GõëM!šÒ¶mÛˆ‰‰¡gÏž^§oß¾lÛ¶Mžžž®ßß*?÷)((àóÏ?çôéÓ8<ˆÕj%<<ðf#$$$°téR®½öZ‚ƒƒëµ]«V­HNN&33“ââbŒF#sçÎeùòå|÷Ýw¸Ýn²²²*Ϋ¦cô±Ùl¬[·Žï¿ÿžÜÜ\^zé%<#Gެ±ÍÈÈHÎ;Ç?ÿùOΞ=«×*©<ÛL]ê:þºÎçÂ… yõÕWÜ®ÇãaÉ’%ÜvÛmÌ;—=zðâ‹/ÖkÛ°°0FŽÉ3Ï<ÃÉ“')**"))IÖ§O>ûì3233IOOçÉ'Ÿ¬ðGxåŸúœËº®QùkÜØsê¯kÈäÉ“ùÛßþÆ?üÀ™3gx饗ª]·¡ÿoêÓ·ÊÛTV×u¬ïqœO_üõÿGˆ–¢  @¯Ú¨ а°0BCCõº1þVPPà÷6…h 24É|o’|®¾úêójçøñã,^¼X>tèPÖ­[§öݬ^xá=Уª*?þ8aaaúP¦‚‚æÎËúõëåM¢E(?[Re#FŒ`Íš5<øàƒÌž=›§žzŠcÇŽ±lÙ²*Ï} Ù¶m+V¬Àn·Ó¡Cžyæ™ CAÆŽËÿøÇ 5¨êÚnÒ¤I|ûí·$&&Ò¿^xán¿ývÌf3Ë–-Ãf³Ém·Ýæ·$5£OÏž=éÕ«/¼ðéééôíÛ—×^{­Ú1û>;vdÑ¢E¼öÚk¬\¹’Áƒ×¸©MmÇ_×ù,(( **ªÁí¾ûî»sË-·ðÐC‘˜˜È„ ¸îºëê¼&ùË_xî¹çX°`¥¥¥tëÖ+¯¼’ÀÀ@þð‡?ð裒˜˜H›6m?~<©©©z¿ªû¨ë\Öu*_ãÆœS^ã|矞ûî»ÐÐP¦L™RíûŠóùSWߪۦ²Ú®c}£>çé|ú/Ä¥ÂápP\\¬bjºg7DTTyyyfTò祒’’óþP\ˆ Å¿ƒÒëמRÇãò¯©å^«üå[î{î{l¨ôØXé{È™3göú3[$;;›AƒqöìYÀ;MâìÙ³ÜÎ’%Køûßÿ@÷îÝÙºu+AAA|ðÁÜu×]€÷ Ã÷ß_íöýë_Y¾|¹þ|Ò¤I<ÿüó2VR\vòóóe Ñ&滇úÞ˜¹\. iÛ¶m3÷¬þN:ÅÌ™3Ùºu«ž#.¬Q£FñôÓO׫€¯Bˆ ///¼¼<\.¡¡¡ÄÅÅù¥]›ÍFAAF£±B_ «’%X_iii„„„`41 zm)×r  7àªô]<•kåSîyù/Ê-§ÜkZ5¯U~\¿dh’(ŠRá“Gß8õ†Ð4>úH¾xñb‚‚‚oÁ>ŸéÓ§×ØÆ’%K˜8q¢þü«¯¾"))©Ö1ÖBq¹Ú±c×_½ašIFF¥¥¥ôíÛ·¹»"„¢š¦áp8ô‚×þü}¬·«iš_K*”””ø­-!šŠbü@UÕ c%=Úà6Ž=Jff&à-8~üxöîÝË·ß~ x>µeÚ(ŠÂË/¿L§Nô×zè¡:‹" !ÄåhóæÍ2œ Y­V^zé¥ZgwBѼœN§^¤×b±ø­]‹Å¢íõw]KùZ´ˆñ“ÉD=ôçÛ·ooð ÅWè `À€˜ÍfþïÿþO’0eÊ”ZgÁo*^ùb¿¹¹¹¼öÚkØíöõG!.e©©©=z”áÇ7wW.[\{íµÍÝ !„µðe¬x<žZk5”ÑhÔÛö7™=V´ˆñƒ   f̘¡??qâDƒ§2ýôÓOõǽzõâž{îa̘1œƒfäÈ‘Œ3†uëÖéy}ÃY, ={öäСC|ñÅ 8àààó>ÆììlvïÞÝnÇb± ’Ö­[G×®]IIIaÀ€tëÖÌÌLvïÞMii)œ>}š9sæThSÓ4öìÙÉ'PU•6mÚ@qq1ü1·Þz+999ìܹS/D\SÛv»;v——‡Ûí¦{÷î 8°Æ>úÔ¶¦ilݺ•3gÎ`4:t(qqq5ö½.F££ÑXë>W­ZÅÂ… xóÍ7éܹ3YYYhšFBBmÛ¶åСCØl6>ýôS:vì¨O{.„B!DcY,¬V+¥¥¥ 222hß¾}£ÚÌÈÈÀ`0 ªªßƒ0‹E2bD‹ ? ä¶Ûn`éÒ¥ú<ö{÷îe̘1\wÝuÜxã 0€N:A›6mhÓ¦M½÷Ñ¿¶mÛx‡)}ôÑGüüóÏúòòÁ…îÝ»ë˜_~ù¥QQl§ÓÉÆ™4i‘‘‘œ}ø‘Çã©v›ÚÚÎÎÎfçÎ$$$I~~¾ž™TÛM¾!Û¹\.TU­±ï•× bêÔ©„„„Ô{Ÿ5iªÂfB4·ÜÜ\úöí €Á`àöÛoo–~$%%Ñ»wo=èÜÒ´ôþ !„¸¸¨ªJtt4%%%úß?þø#mÚ´¡mÛ¶µÿIér¹HKK#==³ÙŒÑhôûÐ$‹Å"¿÷D‹"Åz›ÑhdøðáÜ{ï½¼öÚküéO¢OŸ>„„„Ô{~ûÜÜ\>ùäæÌ™CïÞ½ùë_ÿÊO?ýÄÂ… Ù·oK—.åþûïgõêÕ|óÍ7ôë×Oß633“èÏ'NœH``àyO\\YYYzšÌÌL<5®o³ÙÈÎμSuûŠÊz<:DII N§“’’:wî̈#ÈÏÏÇétb±X(--Åf³Þ,˜ÂÂÂ:ÛÎËËÃl6ƒÛíÆf³Õ€2 ¸\®Z·Ó4M?îììlŠŠŠˆŽŽ®±ïå¯6 íku,‹~^„hÉ4M»(‚Œ6›­EÀnéýBqñð}¨ª*qqq„„„€Ùl&##ƒÝ»wsüøq * Ñw¹\püøqvïÞMFFf³™€€L&S…@Lc÷[,=;_ˆ–B2b.€+®¸‚+®¸‚øøxF­g=x< ),,$;;›ÍFjj*§N"++‹¢¢¢ C‰²³³Y¾|9+V¬`òäÉüùÏæŽ;î¨vŸn·›ÿ÷ÿþn·ðÀ‡~ȰaÈ‹‹«qãÇçÅ_ä¶Ûn#""‚ÿþ÷¿lݺ•ùóçFrr2G%11±Îã~ñŹõÖ[‰ŽŽ&%%…Ý»w3þ|œN'kÖ¬aÚ´iDGGsìØ1¶mÛÆ¼yóHKK«Wÿ«s¾í !„¸|iš†¦ix<ýÃä¼¼<ìv;.—KŸ-Ö÷þÀ—Ec0ôÀ‹ï{ù"½ç› c±X õ{M˜´´4BBBª‹.†ŒÝKY@@À@ p®Jß5ÀSé±Vî1åž—ÿ¢Ürʽ¦UóZåÇ5ñ[AÞ]53“É„ÉdÂjµVâã˰˜5k§Nâ“O>á»ï¾Ó§§v¹\¼óÎ;¬[·ŽÒºukÒÒÒ8pà@…:#qqqÜu×]Í„±ÛíúXÐ#GŽÐ±cÇѶâ┑‘Ýn× V;NÜn7œ;wŽíÛ·Ó¥K=8Ý¡Cþõ¯áp8ôá:‘‘‘ †jׯïþÀûIŸï¾Ý­[7¾ùæ={§[·nU ³×Ä—ÕçÛnÓ¦Mú¾#""ôe;wfß¾}äääÔx¼•ååå±aÃýùàÁƒQ¥Ñí !„¸¼ø¾áD¡¡¡éMë¿#}C}Åx}™ÊÅyëÜðµe2™0›ÍX­V™¢Z´xˆ¹ˆ©ªJûöíiß¾=×_=}ûöåøñã|ñÅ|þùçzý·ÛÍ·ß~[mmÚ´áñÇçÚk¯½]×8q‚ÇÞÜ"ÚB\œÌf3­[·æ¦›nª²lþüù;vŒ~ø]»v1{ölTU¥[·nüòË/8}Ö´°°°jׯü¦°¶ý•W¹¶Sùçu M*¯üÓꊒ;NTU­wÿ#""¸å–[*¼vìØ±F·+„âòãû]P>LPPž S>#Æ@)”)߆—3 Ä´F£‘=zУG®ºê*&NœÈG}ÄöíÛ)..®²¾Ùlfäȑ̛7‘#G6ÛÍ®âª«®jqm !..¾éåãââ8{ö,ÇŽ£sçÎhš†ËåÂãñàr¹¸òÊ+騱#«V­¢¤¤‹ÅB¯^½Øµk‡ƒ©S§PRRRãúV«•‚‚âââjÜŸÉdªwß;uêÄÂ… |ÌW\q[¶lÁf³Gzz:š¦Uïþû³]!„BQ”*/¾Lå2 •3_$#į$Óù²dzôèÁìÙ³ùþûï9|ø0ÙÙÙDEEqõÕWÓ¯_?ºtéB×®]›»»BÑh}ûöåƒ>àÆodêÔ©ìØ±ƒ½{÷@Ÿ>}fÏž=œ;w·ÛÍÀõàAtt4çΫ0–<77·Æõû÷ïÏŽ;øÏþôiÓªÝß•W^ÙäÇlµZ¹á†غu«^ }Ê”)¨ªÚ þW.†x¾í !„P5â{^] ¦¶çB\ΤXï% ''‡¼¼<ŠŠŠ°X,DGGKõpqY“b½M¯)Šõ6¥ 6Э[7 N !„M¤®@LK Åz›‡ë-RTTQQQÍÝ !„¸(•””––Æøñã›»+B!Ä%K‚BÔ_ã'oB!.b?þø#:uªRPW!„Bˆæ 1B!.i}úôiî.!„B¡“Œ!„B!„Bˆ D1B!„B!„ˆb„B!„B!. Ä!„B!„B\ ˆB!„B!„¸@$#„B!„BqH F!„B!„â16w„B\:rss›» B!„B\Ô$#„Âo"##›» B!„票¨¨¹» .24I!„B!„â‘@ŒB!„B!Ä"!„B!„Bˆ DjÄ4·ÛÇãiîn ª*ƒ¡¹»!„B!„B$ãw”–:ñxÜxÜÍŒQ *ªjÀd 44´Yû"„B!„B ÄøUnn.w)fspñd¡””“›ë’ÙL„B!„Bˆf&?q:””8²²úðÏ¿Äår5kŸŒF#3§0ÿŽßpÎ^ŒÓé$  Yû$„B!„B\ΤX¯Ÿ8NŠŠìEÀårñÏ¿ ¨ÈŽÓélæ !„B!„—7 Äø‰Ë墠 P|¡)ðÿ™Xbf¼ù×D§ÒÒR Î\Á!!„B!„âr&C“üÄãñà,i\ÆI—®  ªvÙ9»_~>Qã¶è˜³ÉöíÛïЧ6mÚ0iÒ$nºé&TÕ?q½»ï¾›)S¦pà 7ø¥=!„B!„âb!˜‹È]¿¿kúôªvÙ¿ÿï0÷ß÷hÛö5U,ÜϨVÄøÓ”)SX°`‡ƒðòË/S\\Ì-·ÜÒ$ûB!„B!.ˆ¹ˆ¼òòšZ3bj“\êfB¹!Iß»šnê쀀‚‚‚ büøñœ;wŽuëÖI Fáûöíãî»ïfܸq<õÔS–Í;—›o¾™©S§Vû\4ŒÇãá¹çžcãÆ„‡‡³téR¶lÙBÿþý‰oîîU1sæL&NœÈ¼yóš»+B!„çM1‘Ú†ÕåÙsNÎx4ÚT¶”¸ÙßDÙ0Õ¹úê«9{ö,ÅÅÅX­V\.«W¯fÇŽ8N† ÂwÞ‰Õj¨syyv»E‹1bÄæÌ™sÁŽIÑ|6nÜHïÞ½Ùµk×E7ÛÛ+¯¼BZZO>ùdswÅ/>ûì38À|€ªª„††²uëV¬Vk³bª;×#FŒ GÍØ+!„BˆÆ“@Ì%®Ár{i³ì;''‡¨¨(=²bŠΞ=ËË/¿ŒËåbéÒ¥¼þúë,Z´¨^Ë}Ün7?þ8]ºt‘ Œ—‰ÒÒR¶oßÎË/¿Ì=÷ÜÞ={>|xswë’uêÔ)zõêEtt´þÚG}ÔŒ=ªÝÝwßÝÜ]BQNII ÅÅÅ”””PZZŠÛíFÓ4EñÛ>EAUUL&f³«ÕŠÙlö[ûB4™5Iœ7·ÛÍÏ?ÿÌêÕ«™1cEEElذßÿþ÷DDDüyóøöÛoëµÜGÓ4V¬XAQQ<ðÀ?6!DóسgaaaôêÕ‹„„¶mÛvÞmíÞ½›¹sç2tèPnºé&V¬XÀâÅ‹yì±Ç*¬»fÍþøÇ?ÖºÝÚµkyóÍ7Ù´i à™gž¼Á£—^z‰É“'3vìXž|òIŠŠŠô¶çÎË›o¾É‚ >|8sæÌáðáüÿþûüæ7¿aøðáüñ$//¯ÆcY·n3fÌ`Ô¨QÜ{ï½dddÞ¡Eo½õÓ§OgäÈ‘–ùö½zõj.\ÈðáÙ={6‡à©§žâwÞá‹/¾`À€Ìž=[ßæË/¿ÔÛp»Ý¬X±‚É“'3iÒ$ž{î9nºé&ÒÒÒ?~<ûöíÓ×?räC† ©Ð‡Í›7³hÑ"†Îwß}Gii)Ï?ÿ<Ó¦McÈ!LŸ> 6èÛÔt®çÎËgŸ}¦¯×˜ã¯íZ !„¨]qq1YYYdff’ŸŸOqq1¥¥ÞÉA4MÓ¿û¾CÓ4Ün7‡ƒ³gÏb³ÙÈÊÊ¢¸¸ØOG#Ä…'1MdA| ®Ëïå¾ûh¿kš††Šª(hh(šŠ¦x_W4Å»¹GCó(Þš§Ò—7näðáÃ|øá‡˜L&¿ƒââ´iÓ&ÆŒx‡¡<ú裔––6ø>PPPÀ<À}÷ÝǸqãÈÎΦ¤¤€±cÇòôÓOWøÄnçÎ̘1£ÖíæÎ‹Ýn¯2\féÒ¥äçç³víZ\.K–,aùòå<ôÐCäççóÊ+¯°víZâââxî¹ç˜;w.‰‰‰<ûì³<ðÀ¼üòËüùÏ®r,k×®eãÆ<öØcDEE‘œœLDD«V­b×®]<ûì³X­V^zé%î¼óN>þøcL&ùùù¬\¹’·ß~›Ö­[óꫯòÐCñå—_òðÃD~~>ýë_k<—Ë—/gÿþý<ÿüóX­VV­Z¥aêëá‡fñâÅÜsÏ=´oß“ÉD»víX¶l‹…Í›7³dÉ®ºê*:tèPã¹®¬1Ç_\\\ãµBQ³œœ ê ¶(ŠR%;ÆÙ2‡‡ÃAHH‘‘‘nOˆ M1MEÁ›o¤(0å—ĨJYz’ЧlEEQ@SP4Ênn šMCÑ4ïv KMŃª*hªê}lhš„§ &p×]wP壠²bï¼ò ¡¡¡U¶­k¹O¿~ýHMMeýúõÜ~ûí~ì½âbU\\LRR¯¿þ:ƒ ¢´´”ýû÷3xðൕMii)C‡%44´ÂýfÈ!óÃ?лworssIIIaذaØl¶·«ŽÝngýúõ|ùå—úÁ;3‡zHÄ„‡‡3þ|zõòΊ7gÎ6mÚÄwÜ¡osã7òé§ŸVißív³zõj–/_NÏž=o €ÓéäÝwßeÕªUtíÚ€G}”É“'“””ÄèÑ£õ}÷îÝ€yóæñÉ'ŸššJçÎë<%%%|ôÑG¼þúëtëÖ €Gy„¯¿þºÎmË›:u*7ß|s…×|™”óçÏç³Ï>ã‡~ C‡õj³±Ç¯iZƒ®µB\î<§OŸÆápèÁÇChh(AAA˜ÍfŒF.—‹’’ìv;¨ªªeü9t©°°ÒÒRbbbPUì!Z Ä4EÕ„QªfÅheï½HES ( ¦ï?Íkñ¦È€[óÆqÜªê Æ(ŠŠæñdPT ÿÍ,Ï7cRuZµjE`` {öìÑÿXhÈrŸ¸¸8yä~øazöìÉ AƒüÖ!ÄÅ))) «ÕJûöíõtã>}ú°uëÖb:uêD||<3gÎ$!!©S§rýõ×`6›6lß|ó ½{÷&))‰TëvÕ9yò$‡;B–Ÿ½ÒLwåßú EEEz ¦S§NU2ÒÓÓ)**Òƒ8•—¹\® Åk­V+W_}5'Nœ¨vß­[·ÆjµV»¯ê¤§§ãv»+ìã|Þè^sÍ5U^ËÏÏç믿æÐ¡C’––†Ãá¨w›=þ^½z5èZ !ÄåîôéÓWÀDFFêÁ—òŒF#F£‘   "##ÉÍÍ­ÿdÆ€7;&;;›V­Zù¥=!. 6o FUPTPTÅûU VT *ªQA1ªh#Œ¨Íh@3PŒF“L0QŒFT£Å`@ 0y—`4¢ÁdD5PM“Umš@LmŒF#‰‰‰¼þúë}šˆˆõ´öº–WnëÇäÑGeùòåR!]ˆKTaa!{öìáwÞчà€7kbܸq}šØØX† Â’%K8~ü8ÉÉÉ<þøãõÚ¼Åy}®¸â ‚‚‚عs'7Þxãy}ÍÚ´iƒÇãáÈ‘#U²JÚµk@rr²~n<‡fÚ´i~ÙÛ¶mõ}\wÝuÕ®cµZ9~üx…ëSWàæÈ‘#äççW˜-ïèÑ£deeUX¯ü¹®Ì_Ç_ÛµBáÍà,,,Ôƒ0±±±„……5¸ß6§OŸÆ`04É0%«ÕªÏä*ÄÅL1MDñ Mò KR pðÿVYÏSpçñÏoªž@S½1 PTomƒ·.Làõ÷¢†VCïØÿ*𢠍*¨î&šôÈ#Ô¹Ž¢(̘1£Âøÿ†,_¹re…u+ÿ$„¸ôlÛ¶˜˜˜ AðÖWéÛ·/Û¶mãúë¯'<<œôôtý[åç>ìØ±ƒÊÁƒ±Z­„‡‡Þ¬‰„„–.]ʵ×^Kppp½¶kÕªŸ|ò ™™™„‡‡cµZ™;w.Ë—/§U«VÄÇÇsæÌrrrªNÔPaaaŒ9’gžy†§žzŠ˜˜8@||ûì3† †ÇãáÉ'Ÿ¬5€ɹsçøç?ÿÉØ±cÙ¿?à:äSݹ®Ü·Æ]×Z!„WAAžz^AŸ°°0Àù w­MAAbD‹ C“š’¢xϰê Ê@ñÁeä½~¹o¶%wu;Î~< 0z‡iFÕ;üȨ‚Ñ€f4x‡0 Þõ  >OþëÝÉ_Õü׮ı¹wwe×£Õ`j–¡IBq>ÊÏ–TÙˆ#ؾ};‡Ù³g³qãF}ZûÊÏ} Ù¶m·Þz+£Gfýúõ<óÌ3†¬Œ;–}ûöUØo]ÛMš4‰k®¹†ÄÄD~øan¿ývn»í6–-[ƈ#X¸p!?þø£ßÎÍ_þòºvíÊ‚ ˜8q"ï¾û.gÏž¼³- <˜û￟ßüæ7²|ùr¿}ºðàƒÏ}÷ÝÇwÞ©¿÷½yþÃþ@LL ‰‰‰ÜÿýŒ3¦Æ:b>;vdÑ¢E¼öÚkL›6;v0räÈ ëTw®+kÌñ×çgD!.w‡ƒââb=Õè6£¢¢p»Ý¦¸ö‡Ã!3à‰Áߩק½šæªn’gµÜk•¿|Ë}Ï} •+}9sæÌ^þ‡ÈÍÍå§£GéÕ«;ãF%òÛÁgY0´Ð›SÖÛˆ;Oãøþ9нXV3F-뽊Vv¨Š¢z«ô*e‡¥•¾VÖˆïkš†¯.¯¥ßÝXúßCîÊî(nïX~Å£ñþ~#/ìfó¶8|8…+»u“éÝÄe!??¿Þ3¯ˆó㻇úÞ˜¹\. õ¡,-Á©S§˜9s&[·nÕ3bDÝrrr˜0aß~û­-„â———G^^.—‹ÐÐPâââüÒ®Íf£  £ÑX¡€¯?„……wvcZZ!!!F ƒþ¡ƒ?û'ª nÀU黆÷¯àòµr)÷¼üå–CÅ9‹+¿VùqMüD¡IMEQ~­ã› @UÁ ¢¨ šª€bðΊ¤”‹))ÞJhJÙäJ¿b4¥lÚjMAÅ;{’RvƒPï4Ø.MÑ$#F!j±cÇ®¿þz Â4PJJ mÛ¶• ŒB\â4MÃápèEÛýùû288˜üü|ïÈ~žEI2bDK ˜¦â›5IToàÅùÓ?pÞí%IQ@õæU½)>ª/æ× ŒŠ·¯¦)(šâ]¥,¨i àÊ:€rôð½BEñxP›húj!„¸lÞ¼™›o¾¹¹»qÑ;qâ'Ož¤ÿþäää°bÅ æÌ™ÓÜÝBq8N½H¯Åbñ[»‹·ÛÁ`ðkÁ^¨½Ð» Ä4• Í` hߟPTŠA¥lNë²âº¾QT Þ@ J¹aI€âQ»¥”åÉx4<ІûÌ!\§“Q 4EEU}µúkðÅP¬Qʾ `0¢ª4ÕàmÉ ¢(ƒÅ ¢)ÔØ~Xâ—zŒ¨ªÅ`À`Ë+„B!„8?f³Ù›i¯(äççû­Ýüü|½]3›Í~oS“¿Ô›ˆ¢‚fðÖƒQUÅ bê0cÌ 0¨¨Õ;Ë‘A)  ¨(ªw¨’¢þpQË–©ªÁ›=£P †²3Tƒc«xŒ&£¨FTƒÍP®ÍehÕªU~kËívóÖ[o5j›úöÇŸýnN—Êq!„B\ÎEÁjµê›Í†ËÕøŒ{—Ë…ÍfÓÛõw0Æjµúµ=!š‚bšˆ¢xÇ'*Œo±]ßå×aJ¾Y”TƒŠbð]¼Y2¾Ù•ï¶ŠŠbP¼Ù0ê¯Y1Þv½m{×7 ªF01¨—g F!„BÑx‹«ÕŠªª 222ÝfFF†² Mü„±X,’#Z Ä4_‘^¥¬NŒâ ЍŠ7 Æ`Q½xQ½{µÜð$¼¥,†_3a´²™—TÅ ·­)FƒQ¯G£H æ’·gÏ¿¦‰ ќΞ=˺uëxûí·9yò$§N¢´´€¿ÿýïÍÜ»¦s)›Bˆ–MQÂÂÂ0  233ÉÉÉ9ïörrrÈÌÌÔÛówFLhh¨ßÚ¢)I±Þ&âÉ[¨WSÊ,@@—; èr§¾žVœ†}O"JÙŒI eÓYƒwF%ÊfW*›ÊMÁœðJ`ë*ûT ðxªªðku_q):}ú4]ºtiînáß}÷W]u}úôÁív³fÍ&L˜@ëÖUïwB!„hZ¾I`` aaaäææb2™HII¡{÷îDEE5¨½œœRRR°X,FTUÕ³büŒ ‘aI¢Å@LS)‚äÍpñfÆ8O¼å^¥,R£ * Ò”\(»iª>k’¢•eÇ(Þí\Ç?D l÷ë¾|±¥l¸šwŠkUÅ;ý’ÿäää°k×.Š‹‹±Z­Œ3†   ²³³Ù½{7v»‹ÅBBB111¼ùæ›têÔ‰Ó§OpÝu×qüøqNŸ>ÑhdĈÄÆÆVØOqq1ü1·Þz«¾ß;w2}útÖ¬YC§NÈÌÌDÓ4† B»ví¨¬¦~ÙívvìØA^^n·›îÝ»3pà@l6»wïÆét¦"––ÆÞ½{)))!""‚#FXë6õéxg¾Úºu+gΜÁh42tèPâââÐ4={öpâÄ TU¥M›6$$$pèÐ!l6Ÿ~ú);vdüøñ5öoݺutíÚ•”” @·nÝ*ô«¶óYS›5½îãt:ùâ‹/èß¿?;v¬ß˜¸¬åææÒ·o_ ·ß~{³ô#))‰Þ½{Ù,ûo¬Æô¿¥»BÿSU•èèhJJJp»Ýðã?Ò¦MÚ¶m[ç”Ö.—‹´´4ÒÓÓ1›ÍF¿M²X,ò»K´(ˆi"JÙ¬HZY¡^ç//Z¤êC¥ì‹²`Œ¢¢i*ª¢êSWkxƒ6JÙH2wÆï>P(Hr‚ IDAT›µMÓ¼³+yT4Õã]ÛÏC“\._ý5&L ::‡ÃÙlÆét²qãF&MšDdd$'OždÓ¦MÌš5 ƒÁ€Ëå¢ÿþ„……qäȶnÝÊìÙ³ á?ÿù»wïæ¦›njP_½zõbذadee±aÃn¹åôujë—Õj%!!ÐÐPJJJøøãéÔ©lÞ¼™I“&Ejj*§N¼Á¡íÛ·3uêTBCCINNfïÞ½ :´ÆmÊ«ë<ôëר¨(ÒÒÒØ¼y3³fÍÂf³‘••ŬY³PE/’Ö·o_Nž<É Aƒˆ­±£F¢°°ÐÐPn¹å–²]ýΧÛí®¶ÍAƒÕ¸¯ò?+W_}µaD½išÖ$³'4”Íf«¬lIÓÿ–~ìB!üË÷{YUUýÂÂÂBÀ[ëåÔ©S´k׎¨¨(õ ŒË墨¨ˆœœRSS1˜Íf0™L1ýÝo±Xô6…h)$ÓTPŒ )Š7£–eÁ¨ŠwÞ@Œ†7[F£,ð‚ŠŠw˜’wꥲ”/PCY=ͻշ34@CQ54OY¬Gño ›ÍFpp0ÑÑÑ€÷¦••EXX˜…îСßÿ=¹¹¹ÄÄÄècKºvíÊÞ½{  K—.$''7¸/Š¢èýhÕª¡¡¡dggÓ¦M}ºúår¹8xð çΣ¨¨»ÝNII ááázªeëÖ­õàŽÍf£¨¨ˆ]»vPZZŠÛíÆf³Õ¸MyuõÐÛhÛ¶-ááádggŽÝng×®]tìØ‘¶mÛV{NjêŸO=|>NgÇ\Û¾6lØ@\\œüA'ê-))‰¬¬,Þ{ï=¢¢¢¸õÖ[Y»v-7Ýt“~ÿð9uêIII”””ÅØ±c $))‰_~ùƒÁ@»ví5j_~ù%;v¤wïÞ$''STTÄàÁƒ«]ÿÀdddðþûïÓ¥K¦L™Ríþ‚‚‚X±b]»vÅf³0xð`~þùg²²²0 Œ7ޏ¸8Ž?Ζ-[ªsBB={öÄãñ°eË222ðx<Œ=šöíÛÞûÆÎ;õ,ºQ£FѪU+4M«wÿ«SÝ19r¤Ê¶ÙÙÙìØ±»ÝN`` “&M"((ÈŸ—^!D  ( F£‘Ö­[“Mnn.ªªRZZJFF©©©x<3ñ}~Íf3&“ £Ñ¨÷b+$$D2aD‹$˜&â-ïR6,Iñ_|3"¡G~½ÁE¯ ãФá ÈüúE¡Â°&oÆLÙþ Í[÷WSðs†ÒÒR=øRž/E±òºÕÝ\+¿VÛ ¸òͼ½Êú5õ¯º¶+«é|ÖÔfzzzûoéèÑ£\{íµ˜L¦Z÷-À°aÃHOOg̘1µ~ªUTTĦM›˜9s&aaaìÛ·]»vѽ{w233™?~…̱«®ºŠC‡阔”ÆÇÉ“'«]?>>žcÇŽ1lØ0âââjÜßøñãq¹\ 0€ˆˆþûßÿ²aÃæÏŸOXXÉÉÉìܹ“ÄÄD:uêÄÂ… k=þ~ýú1vìXRRRø×¿þÅüùóq:|þùçL›6èèhŽ;Æ_|Á¼yóHKK«WÿrÇ_aÛÒÒR>ÿüs¦L™¢gÝU÷;@!Ä¥­|V @ll,V«•¼¼<ìv;.— ·ÛÇãÑßS*Š¢¿Ÿô^|ß}EzË·ÝP‹…ÐÐP© #Z,™5©©ø†|3!ýš£©e™1eY2ŠoJkT4ßP%=hóëÐ%¥l†%rS\ãUI){NÙÔÖ(T?§øÇÆÆb³ÙÈË˼MÓˆ‹‹#++K¯“™™‰Çã!""¢Aí{<:DII ‹…ÒÒRý“f›Í¦§Aú=zðÖ•°ÛízF‡o8TmýÊËËÃl6£gx âââ°ÙldggpæÌœN§~üœ8qð/JKKkݦ¾ýñµç[–MQQÑÑÑ8NJJJèܹ3#FŒ ??_oßb±è祦þÕu®k;Ÿ5µY×¾úôéÃW\Á–-[j ¨ ÑPØív¶oßÎúõë9qâ¹¹¹DDDpîÜ9¶oßÎÉ“'õÀl‡ÈÉÉÁápPPP@dddë×wà}CêûÿÛ­[7Ìf³ž½Ó­[7Ξ=[¯cò½÷mW>å;""B_Ö¹sg‚ƒƒÉÉÉ©wÿóòòxï½÷ô¯ãÇ×zLåeff¬×ð²Z­ÅÐ1!„žo‘/¸JÛ¶mi×®±±±„‡‡L`` V«Uÿ²X, b|mÕ÷wŠ¢( , aaaÄÅÅѪU+ ˆM2büDUUÅZ·‰cÅg6V|V~ p—}]8mÚ\€£ÄÑèô¿   † Æ–-[0™LX,†N`` £GfçθÝn‚ƒƒ™0aBƒ÷çp8ø÷¿ÿMÛ¶m‰ŽŽføðálÙ²«ÕJxxx…B°à-"ûý÷ßc6›?~¼>&µwïÞ¬_¿ž &ÔØ¯N:‘ššÊûï¿Åb!..UUõÔÿmÛ¶¡ª*±±±`2™¸á†øöÛo9xð &“‰Þ½{Ó¹sç·©oÀ°9pàX,ý˜²²²Ø¿?v»ÇC||D/,,¬Úõ+¿)¬måU„”^×ФòÊ¿1õx‹Å÷LPPž S>#Ƹñ}/_œWûâr'?1dçœÁårñÔÓ‹Ù¾í[Ž’º7lBV«…‘£†àr¹ÈÎ>SgEóúèܹsµØ·mÛ–3fT»Mù”|ƒÁÀüùóõç‹…¹sçÞ©ñ|Á[O¦k×®Õ¶©(Š^¶²0`À‚ƒƒ«í—ÉdbôèÑÕnß¾}{½>CeÑÑÑL:µAÛÔ§? ,¨öõV­Z1yòä—Ý|óÍuö¯ò°ˆÊ纶óYS›uíKQ&L˜Pm›B4”ªªzfÙÙ³g9vì;wFÓ4\.—ËÅ•W^IÇŽYµj•ž]׫W/víÚ…ÃáÐfKJJj\ßjµRPP@\\\ûkÈ»ú MªŽ/«Ìf³Gzz:š¦UïþW§¶cª|ì[¶l!77—ÈÈHJKK1òæY!.cŠ¢èÅõ}Á_¦òP÷Ê™/„âWˆñ“ÿŸ½û²J?þ’d’Þ $AB7C +¸ˆ¨¬¸ÐUq-«»Êªûê¾^«¿]ѵ7,»‚¢è/ R)Y:¡ôƤ'¤g23Ïï˜gÓ ™àþ\Ε§žsŸÆ<÷œboo³s.\L 4¤?ó4ã»)ŠBee%.\¤O—vÍc"„½ÑÈ‘#Y³f wÜq³fÍb÷îÝ}8pàeeeX,bbbÔùL¼½½)++k0–¼°°°Å룢¢Ø½{7§OŸæ®»îj¶¾ððð.o³££#·Ýv;vìP{ÑÍœ9­VÛ¡ø÷N´³³k±Mï2e ?üðƒš¤™2eŠLÖ+„×¹ÆÏ8uûÍ%bZÛâzfë í)OÓÆvýcÚzÇ¿êÎ×í×mëmëýtÉÏÏ?ØøƒÂRRRøùÜ9<=Ý06/ÿJPXx™Á‘‘„††öt86³bÅŠ+ú†Y4ïZ{?‹‹‹éß¿O‡qM«û µZ­X,Ìf3¥¥¥-®êÕÓ6oÞLDDD‹½ì„BÑ9m%b®™™™¸¸¸4YÙéjlËÕÄÞÞ>(¥vs£Ÿ `m´­ÔÛ¦Þ~ýõÎSï˜Ò̱ÆÛ-±YAzÄØPhh(EEEäææ`U4(JÏNRªÑh)*.Á? àšJÂ@Ó¡6¢säýײêêj233™6mZO‡"„B\³$Y!DûI"ÆÆn¼ñF (..ÆbéÞ‰yÓét¸»»ãååÕ£q!DO:þ<¡¡¡-®,$„B!Dw’DLðòò’ä‡Bô#FŒèé„B!„Pun=c!„B!„BÑn’ˆB!„B!„è&’ˆB!„B!„è&’ˆB!„B!„è&’ˆB!„B!„è&’ˆB!„B!„è&’ˆB!„B!„è&úž@!ĵ£°°°§CB!„¢W“DŒB›ñôôìé„B!®HEEEO‡ ®24I!„B!„¢›H"F!„B!„¢›H"F!„B!„¢›H"F!„B!„¢›H"æ: ( ‹EQz:!„B!„âº&«&]#EAQ¬V«úR“ÉDFFDGGãííF£éép…B!„Bˆë’$b®"u‰–ú —ºÞ.¤¦¦’’’ÂÅ‹ILL$++‹ŒŒ *++øøã¹ýöÛ±··ïá–!„B!„×'IÄôRV«³Ù¬&[Ìf3¹¹¹$%%‘””DJJ ©©©ddd••¥&[ZsñâE,K7D/„B!„BˆæH"¦ Y,,‹šLÑh4hµZt::®Åûjjj8tè[¶l!%%…ôôt²²²(++ëp ööö˜L&RSS1›ÍWÜ!„B!„BtŽ$bº€ÙlæòåËìß¿ŸÝ»w“••ÅåË—quu%((ˆØØXƇ››vvvÍÞ¿ÿ~V¬XÑ®úœ '<<œ°°0ÂÃɈˆ <<œ¤¤$ÆŽ @ZZšôˆB!„B!z$blHQ øúë¯ùè£ÈÍÍmöºU«VáííÍÃ?Ìüùó›L «Óéðöönp½½=}ûöeÀ€DFF2dÈ À€ A«m~¬úÇF£ôˆB!„B!z,_m#V«•ÄÄD~÷»ßñòË/·˜„©“ŸŸÏ+¯¼Âܹs9{ölƒž*:ް°0uĈTVV’””ÄöíÛyûí·y衇˜2e  h1 àí퇇¹¹¹ê0%!„è­>Ltt4Ï?ÿ|“s .dÆ -î÷&V«•åË—3yòdfÏžMrr2ü1ñññê5½9~!„BÑ5$cŠ¢˜˜ÈÂ… Ù»w¯z<**Š·Þz‹ýû÷“˜˜Èx÷Ýw=z´zÍÉ“'Y´h (ŠÔ&bú÷ï¯[JMMm5ÙÒ–º¤NMM F£±SÓ^yå¦L™Â”)S˜>}:<ðëÖ­Ãjµª×<úè£lÙ²åŠëhɃ>È7ß|cór…½ËÖ­[:t({÷“Ç6l >>ž5kÖðÉ'ŸÌŽ;8wî\O‡&„B!z M²ÂÂBž{î9prrâÃ?ä¾ûîk0ähàÀÄÄÄðØcñõ×_óÐCQVVFZZÏ<ó Ÿ}ö¾¾¾ôéÓoooŒF#—/_&77W=×Q9r¨]9iذa­NÜ–™3gòàƒRUUE||<ï¿ÿ>•••ÌŸ?ÿŠËl±cÇ6è)$„¸öÔÔÔ°k×.Þÿ}{ì18@lllO‡uEÒÓÓ‰ŒŒl0Ôô»ï¾ëÁˆ„BÛ:{ÉDÜÅ*Nf˜H-¨¡¸ÂŠU±e Z ¸;éñ²cD?{&FhoËJ„èvÒ#¦“ª««Ùºu+qqq888°mÛ6.\Ø ÓØÜ¹sùé§ŸpttààÁƒlÚ´‰ªª* ¶WL@@€z}BBÂÇ®n'%%uzž{{{œñòòbÚ´iÜÿý¬[·®Se¶Ç’%KˆŽŽîòz„=çÀ¸¹¹É„ عsç—5mÚ4>¬îÿüóÏŒ7NÝß¿? .düøñÜyç¼÷Þ{깚šÞ~ûmn¿ývn½õV^yå***Ôó .äÇä‰'ž 66–C‡5¨ûÕW_eÕªU|ÿý÷Ü|óÍÌ›7O½oÓ¦M-ÆÜV½­Å,„Bt—}‰U<²*ŸÅÿÊã_ûJ9–^Mayg“0JíK©{YAQ°Z ËÌK«â_{KXü¯\Y•ϾÄ*µFˆî'‰˜N*++ãÃ?T÷ÿñ0~üøvÝ;zôhþùϪû}ô¥¥¥@m"&((H=g«DLjjªÍWN6l—/_¦²²R=vöìYþøÇ?rÇwððÃsæÌþö·¿ñúë¯7¸ÿ›o¾áÅ_àÈ‘#<úè£Ì˜1ƒ… òÙgŸ©×57äiíÚµ,Y²„»îº‹^xììì6ËBô^Û¶mcÊ”)Lš4‰={öPSScózJJJxæ™g¸ãŽ;ؼy3o¼ñ·Ür‹z~ùòådee±råJ¾úê+²²²x÷Ýw”ñüóÏË'Ÿ|ˆ#šœ»ï¾û˜9s&‡bõêÕ튫µzÛŠY!„èßRÌSk 8–^m£ë/€¢ (VÅRûÓúË«Þ1…ciU<õM>ßRd£„è^24©, ©©©\¼x€   –.]Ú¡2|ðA–/_Nrr2)))\¼xOOOôz=ÁÁÁêu¶JÄdddØ<SPP€———Ú»çòåËlݺ•wß}—€€þýïóòË/³zõjbccyçwPEí1´ÿ~fÍšEii)/½ôK—.eÒ¤IP]Ýòüš5kعs'þóŸñôôäÔ©S¸»»w¸!DïPYYI\\Ÿ|ò cÆŒ¡¦¦†#GŽ0vìX›Ö•——GMM ãÇÇÕÕWWWõ\yy9ëׯgÓ¦MxzzðÈ#°lÙ2–-[¦^7kÖ,fÏžm³˜Úª·µ˜…Bˆ®VZeå™ï m˜€Ú$ (ü·Ìí#]˜áHd€>.µÓ)ä•Z8g¬æ?+Ùt¢4ZÐhXw´œÔ|3ËïñÂÅ } ÄÕC1`2™Ø·oŸ:Éî]wÝ…½}ÇÆ+êõzî¾ûnµ—Ⱦ}û¸ñÆÑét 0@½®3‰˜ˆˆuûÒ¥K6[ÂÚb±’’ÂçŸÎ=÷Ü£wssãÞ{ïeðàÁüö·¿eÓ¦Mdff2zôh*++9þ<ƒ¦¨¨ˆ¤¤$ÆŒCnn.f³™›o¾\\\Z­{õêÕüýïWÛW÷Ípvvv»ËBôqqq8::¬ö°1b;vì°y"&44”èèhæÌ™Ã„ ˜5k–:‘zZZV«•x@M›ÍfÊËË”1|øp›ÆÔV½­Å,„Btµ®IÂ(µÏRŠ•ÛG¸ðð$wüÝšÎeéï¦Ãß͉[npâáXw>Þ]̦“¥(-ÇÒªxæÛ>ZècÃØ„èZ’ˆé«ÕJZZšº¥¿”׿/==‹Å‚ƒƒCƒ‰iëzÝ\ 777|||ÈËË#//¯Á¢+±víZÖ®]‹F£Áßߟٳg3kÖ¬×Ô­øàïïÁ` ²²ÆŒÃÁƒøàŽ=Ê÷ßÏ3Ï 6°yófV­ZÅwÞÙêÄÄ@ƒó±±±aoGØÛÛÃ{ï½ÇðáÃqvvj¿ß¶mùùùTWWsòäI C³Rººº2~üxÞ}÷]222¨¨¨àÀTVVv¨!DïPµ¤Æ&MšÄ®]»°Z­Ì›7­[·òÌ3Ï4Ù¯ïÉ'ŸÄÇLJ{ï½—?ýéOL™2¥ÁçÍÎ;Y°`“'OfýúõüãÿPçùZ²d ÷ß?¯¿þ:“&M⡇âüùó6owãø[«·­˜…B[;{Édû!IÔÎ £X-<<ɳÓ%><ÉÅjÅÊñô*ÎdÉ"¢÷“9b:¡.¡`ooÉdbË–-¤§§7Xí¨-F£‘ï¿ÿ¨M¼Œ?^ޤ×ëéÛ·/GŽj1±±±WkW/aÝQ“&MâÅ_l°IYY™ºbJEEýúõ㥗^jñ!ãü#|ðO=õ555„……1`À¬Vk‡ÊBô¼>ø ÅsóæÍcÞ¼yÄÄİqãFõ\ãýú<==yûí·[´hP»ÊÝ[o½Õb† °`Á‚fϯ\¹²Å{ë<ùä“mÞ×8þÖêm+f!„ÂÖâ.VÙ¶À_†$)Š•™#]›˜·£üÝtÌéÊ÷'Ë@Ñw±Š¡A6Vˆ®#‰˜NÐh4„††Å¨®®æÉ'ŸdݺumΙRç©§žRWÄ9r$TïÕét ’:™°×b±––FBB ìÚµK=wþüyL&S»Ëªï…^hóšæ¨ê’Mu‚ƒƒÑëõ VB à•W^iw¹... 9õµVŽB!„¢m'3®ì™¡yÿí ƒÕ„AW6¿fs& êÃ÷Ç/ƒFËÉŒjEi÷ó˜=A1äêêÊ¢E‹ˆ§¦¦†õë×óôÓOóÆo¨s½4GQž{î9Ö¬YÔ&]î¿ÿþcýõz=¡¡¡ê~ã¡IŠ¢™™©&[Μ9éS§HJJ";;»Å^/III¤¤¤àîînÓUH:bß¾}Œ5J& „B!„è]R jlWXݽ¿ôˆ‰ ´]¯•È@ÅŠFQHÍ·eòHˆ®!‰˜NÒétüêW¿bΜ9|õÕW¼õÖ[œ>}š7ß|“aÆ5¹ççŸæé§ŸfëÖ­ê±Ù³g3yòdEÁd2aµZ±X,ôë×O½æðáÃ<ýôÓœ:uŠ„„ŒF£:ñdG(ŠÂæÍ›‰ŒŒÄÉÉé ZÝy»wïfæÌ™=R·B!„¢mÅÖ¶/ê +(V|\l÷…°‹®vÞ¬]³¶&‰ððð`éÒ¥²eË~úé'†Î7ÞȘ1cðòò¢°°ƒrôèÑ+|Lš4‰»îº‹“'O’œœLrr2iii¤§§“™™©^wéÒ%Þ|óÍvÅäååExx8„‡‡Nzz:Ï>û,P;<©3+'uFVVIIIMVKB!„B\ËþÛ#Ææ%ÿÒ#š$z=IÄØÈ AƒX¶l~~~¬Y³†ÊÊÚ5ì;ƱcÇš½G§ÓáêêÊ‘#Gؽ{w‡ëtss#,,LM´ÔOºxz6œ¼¦¦¦A£ÑØcöñã?öHÝB!„BˆöqwÒRXn«¤‰Ò`3¯ÔŒ¿›mGóJÍjñ0°èý$c&“ ‹ÅBHHóçÏÇÃÃíÛ·“˜˜HUUË3[,ŠŠŠZ-ÛÉÉIM®„‡‡FDDøúú6)/--#GŽÀÅ‹ÕùcÒÒÒz¬ŒB!„âêâeGay×,}îRµÍ1ç.ý7Æþ^v6)Sˆ®$‰˜NP£ÑÈŠ+8pàäçç7vÔ 0 A–ºWß¾}›Ô™™™É™3gÔ$K]Ò%99¹]«!i4&OžŒ££c‡â`X’m IDATB!„B\?Fô³çXº­1š›{~¾Ì-ƒm³pÇžŸ/«Åïgo“2…èJ’ˆé„’’þô§?±}ûö6¯Õëõ„„„4BNppp“Õ‹rrr¸xñ"?þøcƒ„KBB‚:ì©#\\\ðññ! €˜˜æÏŸÁ`èp9B!„BˆëÃÄÿÚWjÃ5 Ñ ÑhÙx8›¥“};Ý+&û²™‡³ÑÚ9‚FÃăÌ#z=IÄtBEE;vìP÷µZ-ýúõkd©Kº„††bg×°›\AA ìÝ»WF”˜˜HBB%%%ŽÇÉÉ |}}ñ÷÷ÇßߟÀÀ@ñðð OŸ>899Ðd!„B!„¨oH =7;ذW hТh´ ÑñáŽlþwvß¶ojŇ;²A£–QÁŽ ±á²ØBtIÄt‚¢(èõzjjjèÓ§ùùù884ü‡_RRBBBk×®m2oKaaa‡ë4 x{{ããヿ¿?j²ÅÓÓSM¶8;;ãä䤾ôzù£Bôn—/_æ‡~Àd2ñ«_ý FC@@vvv¼óÎ;<ñÄ=b—¸–Û&„âêwߘ>¶IÄh@ƒå—1­ž ‡sˆ ræÞ+*rÍÁ"6ÎA«7 ÑhY0ÆEzÈ«‚û,çÏŸ'77—_|‘+V4Y¶Z\îºë.\\\(--å‡~ÀÉɉAƒÙ¬|ƒÁÀĉe5,qÕR¥W|ƒ•MDDDO‡!„Bô*Ëïñä™ï ;™Œùo¯V:;4(h5°áP6ëdpgL_b‡xäˆKíãj^©™sY•ì9[Èúƒ™h´vhõöhtöŒ éÃ?îñA«ÕJoqÕDL'ØÛÛsï½÷RYYÉáÇÑh4øùù©s¶àââÒ`øPݶÁðßÙ¼­V+§Nâõ×_W:Ï?ÿ<3gÎ$$$„›o¾™ÊÊJöíÛÇgŸ}Æc=†‹‹KO6]t‚‹‹ Ç'##æ‰FCHHˆÍÊ¢;ÅÅÅ‘““ÃW_}…—— ,`åÊ•Üy縹¹5¸6==¸¸8ª««ñòòâÖ[oÅÉɉ¸¸8’’’Ðétôë×[n¹…M›6ÂСC8~ü8Œ;¶Ùëããã¹téß|ó dæÌ™ÍÖçììÌ{ï½GXXÙÙÙŒ;–ÄÄDrrrÐétL:RRRš]]o„ <«ÕÊöíÛ¹téV«•É“' Ô® ·gÏÊËË1 ÜrË-øùù´»þ–Þ3ggÛ,*„âúàbÐòÑ}Þü}Kqç†)i~™°—_:Æ ¬-Xt¬?œÍúƒY(Šê¾ìþe^´:4z­ÖŽYQn,ûµ7:N0âª"‰˜N ࡇbÖ¬Yh4š GGÇv} äææòÜsÏQ\\ @tt4/¾ø"Æ cùòå<öØc¼ýöÛ 6Œ©S§booßu kA^^û÷ïW &L˜€«W¯&,,Œ .póÍ7ÑhdÿþýÔÔÔàááAnn.÷Ýw_ƒ2EáÀ¤¦¦¢Õj b„ TVV²víZ,XÔ®2µgÏî¾ûn€Ë.//g÷îÝa±X4h111-ÆX§µûEaÇŽäçç£×ë?~<þþþ-ÆÞ½^¯N ¬( »wï&;;EQ˜0a}ûöåǤ_¿~ <€Ó§OSQQÁèÑ£[¬³þ|3ìÝ»—ÊÊJ™2e NNNW¯]mâĉdee1eÊõ3¥9lÛ¶9sæàææÆáÇٻw/ƒ Âh4²xñb4 f³€!C†pâÄ 5sá¦NJZZZ³×GGG“œœÌĉñ÷÷o±¾iÓ¦a6›¹ùæ›ñððàÌ™3lÞ¼™Å‹ãææÆñãÇÙ³g÷Þ{/¡¡¡mÎ5jÔ(n½õV.\¸ÀO?ýÄâÅ‹1™Llܸ‘»îº ooo’““ùþûïY´hz½¾Ýõ·Ö!„¢£þ|›; ¬:Pv…½c4 Qj'îÕêÐh­U‹¢Ñ¡Xõ XP¬V@QïÑhkWZÒhuŒìïÌü1nLÔ­V+½aÄUG16àåå…——×Ý[ZZÊ'Ÿ|B||<}úô᫯¾j0ñîïÿ{öíÛÇ×_Åbá…^ ,,ŒAƒuë‡Édbë̘֭1OOOÒÒÒØ¶msçÎE§ÓQZZŠ««+óçÏG«Õb2™øñǹýöÛñòò"##ƒÔÔÔ&åfff’““Ãܹs<µKKe;::2aÂ\]]©®®fíÚµ„††âçç×$ÆúZ»j”¼¼¼ÈÌÌäÇdîܹdggw(vEQ0œ>}š1cƨLJΤI“HLL$..Žyóæ1hРΜ9£&b™4iR»Þ/³ÙÌ–-[˜>}:ÞÞÞTUUáààpEﵽɥK—(//g×®]@ígÅbÁÃò²2víÚÅÀÕ%ýû÷ç§Ÿ~¢ªª “É€§§':®ÙëÛ[üwø)@DDÿùÏÔÞ;9r¤]mÒjµx{{«÷mÛ¶M­ÛÃÃC=7`À>LAA~~~í®¿µ6!„Wb\˜qaÎ^2w±Š“&R j(®°bm:cC34uÿ¡ C£­7F£ÑÕö„±ZPP@©¶äæ¤%ØËáý Lˆpbh_Gt:]ƒŒ$aÄÕD1=Èl6³ÿ~>øàõØûï¿ßìÜ~ø!‡"99™K—.ñÒK/ñþûï«¿ w‡œœÜÜÜÔ ,û÷ïϱcÇ(,,T¿Á¾á†Ôë³³³ñððP“TÍöâqww§¼¼œ½{÷Bß¾}ÛŒ¥µ²µZ-f³™£GRVVFEEååÿí>Y?ÆúÚº¯®®¾}ûâîîN^^^»c///gõêÕôéÓWWW¢££Õ•`4úž8P}XêׯÿùϨªª¢¦¦ôz}›ufggÓ§Oõï‡Á`¸â÷ZˆÞÄÁÁÀÀ@î¼óÎ&ç/^Lrr2gÏžeï޽̛7­VKDDIIITUU©ÿþÝÜÜš½¾ñ/q­ÕWŸN§kq¿­¡IõÕÿEÒjµ6ùÌ4™LÍNDØZýímƒBÑQCíxå½ôë¦e¨[ ÄjµªÛŠ¢¨çëþÿX—x©ß ¦î¼WIÄôEQHOOçùçŸW{%üæ7¿aáÂ…Í^ïææÆš5k7n&“‰;wòÅ_ðÈ#tÛ8‹ÅÒä¡ ¦¦F}(hüØÜCDs\\\˜;w.iii\¸pǫìVk³÷´Vv^^{öìa„ xzzR\\¬&2ZûîÈ}f³­VÛbì¯wvvfÖ¬YmÎíSÿ!L«Õ2pà@RSS©®®&<<¼Õ÷«~555jò¥¾öÆ+DoS—(õ÷÷çòåË$''3`ÀEÁl6cµZ1›Í„‡‡Š+¨®®Æ`0ÉÞ½{©ªªbÖ¬YTWW·x½££#%%%øûû·X_ý^‹miÏФæ°}ûv²³³ñ÷÷'++ EQ:ÜÓmB!ºBÝ*±õ“+u ˜Æ‹¡4îù"Iq5“õ½zHQQ¯¾ú*ééé@m/‹?þ¸Õ{¢££ùûßÿ®îÿóŸÿdïÞ½j² «ùûû“““Cnn.P;G‹ÕjU»Æ7w}vv6yyyäçç«C¬V+'Nœ ºº“ÉDuu5 `Ò¤Ic2™0 ÔÔÔ¨QfggSZZÚfÙEEE888àããƒÅb!;;»É·Åõét:Ìfs«÷)Š¢¶;//ŠŠ ¼½½[Œ½~û:cРA$''“œœLXX@‹uÖçëëKvv6EEE@mâHQ”vÝ+Do4räHÖ¬Y£&SâããY½z5k×®%55•ÂÂB¶mÛÆÊ•+ùòË/‰‰‰Q“‘ÞÞÞ”••áä䤮*ÖÚõQQQÄÇdzvíZt:]³õuGGGn»í6vìØÁ_|ÁÁƒ™9sf‡—æ´³³ë±6!„m©Ÿ`©KÈètºf_‡"IF\­¤GL¨ªªbãÆlذ¨ý¦wÕªUêð”Öüá ..Žõë×c2™X¶lß~û-ááá]þAd0˜NG||<%%% ¦M›†^¯'''§ÙØ+**ÔöÕµåJxzzR^^Ž‹‹‹úXTTÔâûUÇÙÙ™‰'²}ûvììì0 ÄÆÆRZZÚæ½Bô”¹sç6Ø¿ÿþûÕíñãÇ3~üx ¶gל9sšÜ_ד®9žžž †}´x}`` óæÍS÷}}}›­ï‰'žP·u:K—.U÷ C»{ÁÔ/àñÇW·ƒƒƒÕ Ë;SKmB!z‹¶že$é"®%¶þÛÜžò4ml×?¦­w¬ñ«î|Ý~ݶ®Ñ¶¾ÑO—üüüƒ»ºu«ÕÊñãÇ™3g%%%üÏÿü/¿ür»Ë(**âÆoT¿Ñœ2e ï½÷ÞOÜ]ÊËËÙ¼y3÷ÜsÏUUvOÛ±c$44´§C¹jÓ¿ÿžãšV÷jµZ±X,˜ÍfJKK{å¼CÕÕÕ|ñÅ<ðÀ­öŽB!Äõ-33ôz½Ú$ ÔÕìííc€RÀ˜ýTk£m¥Þ6õö뿨wžzÇ”fŽ5Þn‰Í’24©›åææò—¿üEMÂÜtÓMüÏÿüO‡Êððð`Íš5ê);vì૯¾j0±loQ^^®ÎóóÏ?rU”Ý[˜L&.]ºÔâŠ.Bˆ¶?žÐÐPIÂ!„Bˆ^A†&u£ÒÒRV¬X¡.U µCt~ýë_«û555”••5¹·ººšŠŠŠÇêgf_{í5†ÊĉÕ!:½Ajj*çÎÀÏϱcÇ^e÷ ôïß_ …è„#FôtB!„B¨dhR7©©©á§Ÿ~bñâÅj/[ áÛo¿%$$DºÏ‰ëš MêzWÓÐ$!„Bˆö¡I=C†&‰.¡( F£‘^x¡Ë’0ŽŽŽäææòÞ{ï5Û£F!„B!„=¯÷Œa¹Æ {ì±IFƒÁ`h2”¨îxãá(''§f‡©Ô•„‹‹K´@!„B!„%‰˜n ÑhðôôdöìÙMÎéõúf»ºétºfÛÙÙuIŒB!„B!„èz’ˆé&z½WWמC!„B!„=HæˆB!„B!„è&’ˆB!„B!„è&24I!„ÍötB!„Bôj’ˆBa3žžž=‚B!Ä©¨¨èéÄuB†& !„B!„BtIÄ!„B!„BtIÄ!„B!„BtIÄ!„B!„BtIÄ!„B!„BtIÄ!„B!„BtIÄ!„B!„BtIÄ!„B!„BtIÄô EQz:!„B!„Bt#}Op½Q³ÙLUU899áèèˆ^/B!„B!ĵNžþ»‰Õj¥ººš‚‚Nœ8Á™3g(--ÅÝÝQ£F1jÔ(\]]±³³ëéP…B!„BÑE$ÓÅÌf3$''sâÄ ’““±X,êùââbvíÚÅáÇ9r$7Þx#ØÛÛ£Ñhz0r!„è~V«•/¾ø‚¸¸8’““ $**Š¥K—âììÜê½ .döìÙÌš5«Kã{ã7غu+îîî,_¾œíÛ·Ettt·Å!„B!®^’ˆéV«•ššJJJ8{ö,'Nœ //O=À„ ¸é¦›8rä?þø#ÅÅÅìÛ·£GÉèÑ£ñööÆ`0HBFq]¨©©áÑG¥ªªŠGy„’’’øøã™;w.Ÿ~ú)¾¾¾|øá‡dffòÊ+¯tkŒ6l >>ž5kÖ ÕjquueÇŽ8::ª‰!„B!Z#‰«ªª"55•'NpáÂL&z½ž#FƒF£!))‰ï¿ÿž|òIÒÓÓùá‡ÈÍÍ娱cœ>}šððpn¾ùf‚‚‚pttìá– !D×úöÛo)..æË/¿ÄÁÁ€   bbbX²d ï¿ÿ>ÿû¿ÿÛ£1¦§§‰···zì»ï¾ëÁˆ„B!ÄÕF16T^^ή]»8xð º"’››·Þz+ýû÷gß¾}|úé§TWW7¸oíÚµDDD°xñbòòòغu+—.]âܹs\¸pÈÈH¦M›†‡‡‡zÕjÅd2¡×ëe¢_!Ä5áË/¿äñÇW“0uìííYºt)øÃøãÿÈúõëùì³Ïرcwß}7Ë–-àäÉ“lÞ¼™óçÏijÏ>ËÈ‘#Ú7|ðÛ·o§ººšI“&ñÔSOáääÔ)Z°`›6mâäÉ“¼öÚkÜ|óÍj¯¾ú*ëÖ­`óæÍ 8Õ«W³páBæÌ™Ãí·ßÞl»Úªwÿþý|ôÑG$''ãííÍ”)Sxì±ÇløÎ !„BˆÞDžàmHQŠ‹‹,K}ùòe¶lÙByy¹zÌ×ׇAƒÂñôô %%sçÎsñâE^{í5î¹çn½õVÖ­[Gii)‹…Ó§O3lØ0\\\ÐétTTT’’B||< `øðḺº¢Õvýj䯼ò »víj{ù1cÆ î¼óNµþ|)S¦ðÛßþ¶ËãB\ÊÊÊÈËËcèС͞5jŠ¢––ÆÂ… )//o24©¨¨ˆ7ò¯ý‹   >úè#–-[ƦM›°³³cùòå³råJÌf3ýë_y÷ÝwÕ$ÀóÏ?ÏsÏ=Çc=Fpppƒžþyœ)..楗^jwÛZ«·¤¤„gžy†§žzŠ©S§’——×$Y/„B!®-’ˆ±¡>}ú0|øprss),,ÄÁÁêêj5 3bÄ0n»m*¡¡ýÜWRRÊûï¯ 55µkת“ùj4 ¾¾¾øùù¡( éééìÛ·sçΡ( ‰‰‰?~œØØXÂÃÃqrrêò9efΜɃ>HUUñññ¼ÿþûTVV2þ|ÆŽKXXX—Æ „¸¶F€=ÿêsrrÂÕÕ•üüüËððð`áÂ… 6 €E‹±nÝ:222ðóócýúõlÚ´ OOOyä–-[Ö 3kÖ,fÏžm«fQ^^Þj½yyyÔÔÔ0~üx\]]quuµYÝB!„¢w’DŒ 0wwwŠŠŠ¸é¦›¸|ù2çÏŸÇd21qâ¸&IWWœk»¨[,ìííñòòÂÏϾ}ûˆF£a÷îÝìß¿³Ù¬öºQ…¼¼<¾ûî;ˆ%((¨I×~[²··ÇÙÙggg¦M›FYY«W¯V1K–,鲺…×&²³³qqqirÞd2QVVFPPP«åØÛÛ«Û8::RQQAZZV«•x@MV›Í潆ÞÙ¦4ÐV½¡¡¡DGG3gÎ&L˜À¬Y³=z´McB!„½‹$bº@ÝQ£F””„Édj°luceeµ¿”2xð`BBBð÷÷Çb±pôèQöïßßä¡N]R&11‘””¢¢¢7nžžžÝ2\iذa\¾|™ÊÊJyôÑG™9s&·Ýv>ú(Ó¦M#..Ž„„‚ƒƒyüñÇ4hP›çÿö·¿a0øÓŸþ¤Ö÷Í7ßpîÜ9^~ùå.o›¢{¸»»ãææÆñãÇ orþÌ™3hµÚ&Ã…ÚR—ü¨Kî|ùå—¸¹¹u>àvj«^­VË|ÀÑ£Gùþûïyæ™gˆŽŽæ7Þè¶…B!D÷êú§ô댢(jbÄd2agg§&C¬Vk‹÷•••0hÐ &L˜@hh(•••l߾ݻwS^^ŽF£ióe±X8qâëׯ'55³ÙÜåm.((ÀË˫ՕÞ}÷]/^ÌçŸNdd$Ï>û¬ÚæÖÎÇÆÆrèСóîìß¿ŸØØØ.m“¢ûÍ™3‡•+W6I:[­VV¬XÁ½÷Þ‹Á`P×ÔÔ´»ì€€œÙ³gÍâµe½QQQüõ¯åóÏ?gÏž=äæævS„B!D÷ª©©áwÞaúôéDGG7x-\¸ÂžQˆ.'=blÈjµréÒ%222P…½{÷2vìX5c6›¹tÉHrr*%%%X,V||¼ ¨öˆ©ëÅ¢Ñhpss#,,Œ‚‚*** ÅÑÑ“ÉDAA•••xxxàîîŽF£¡¬¬ŒÄÄDˆˆˆÀÏϯKWT²X,¤¤¤ðùçŸsÏ=÷´zíÓO?­N¹téR:Ä®]»˜9sf«ç§NJee%çÏŸgðàÁ‘””Ę1cº¬]Bˆžqß}÷±{÷n-ZÄO<Á 7Ü@FFŸ}ö%%%<ðÀêµ~~~¬[·£Ñˆ»»{«‰`¨\|áÂ…¼ûî»øùùM~~>DFFÚ´îîîdee¡(J›õ–””°{÷nbbbpuuåèÑ£8::âîînÓ˜„BˆÞâ£>båʕ͞;wîK—.åÃ?TçVâZ$‰*++#>>­V‹N§ãÂ… „……©=a¾øbu³ßàj4µÇ‡³³³š¸Ñëõ„‡‡“œœL~~>“&MÂ`0pòäI8€¢(±xñbüüü(**"--àà`FŽÙ`®[Z»v-k×®E£ÑàïïÏìÙ³™5kV«÷ÔŸ@X£ÑIfff›ç3f dðàÁ8p€¨¨(uÙW!ĵÃÉɉ/¾ø‚?þ˜>úˆŒŒ BBBˆ‰‰áÁlð™6cÆ öíÛǽ÷ÞKTTo¾ùf›å/Y²^ýu²³³ñôôäþûï·y"fÞ¼y¼úê«$''óú믷Zoii);wîä½÷Þ£¼¼œþýûóü£Ë>¿…Bˆž¶yóf>ÿüós³²téR’’’˜:ujƒ{|||˜1c?ü0vvvݯ]A16äääD¿~ý°X,¤§§‰^¯§¢¢¨í†§×ëéÛ·/^^^(ŠBFFyyyjÙÙÙ·øí®Éd"))IMÜ”––’ŸŸ··w×7ðÓ§OgéÒ¥ØÛÛ_ñ¡N§k0Ä µó±±±¬ZµŠÅ‹³ÿ~&MštEu !z?{{{üqüñV¯spph2Jsß®ÅÅũۆ °`Á‚fËléÛ¹úž|òÉ6‰aãÆíª7((ˆ·Þz«Íz…BˆkEݳOGøÈËËãßÿþ7†ßÿþ÷]šÝF16¤×뉊ŠbàÀœ>}šádznÝ:, z½žÙ³g3qâDu¸Pii)Š¢P^^Î[o½Eqq1;wîÄÛÛ›n¸N×¤Žšš ËÌÌìÖå¢ëVLj¯ÂÂB6mÚ¤NÞ páÂæÎÛ®ó£Gæµ×^#==Ó§OóÜsÏÙ¨%B!„BˆžßîkOž<É<À¦M›$#® 2Y¯9;;Htt4§OŸÆh4âààÀK/½Ä-·Ü¢&aª««yíµ×X¾|9îîî¼úê«c6›Ù»w/%%%MʶZ­Ýàø™3gL|ÛÛ888páÂŽ?NII +W®¤¢¢‚‰'¶ë¼½½=111¼÷Þ{ >¼CI !„B!ÄÕmĈ Fq5“DL¨›óåĉÜqÇøúú6¸ÆÎÎGGG°³³C§Ó±dÉ4 ”””4X)j—9 "&&†°°0\\\6l_ŒÙÐ IDAT111xyyu[û:ÊÙÙ™I“&ñÎ;ï°`ÁÎ;Ço¼¡&¥Ú:0iÒ$Ž;¦&g„B!„ב#G2jÔ¨žC›¡I]Àl6“““CII öööŒ7®ÁùË—/sêÔ)–-[¦®µËœ *++)++kv¹kGGG&MšÄÅ‹9xð QQQuK»^xá…6¯ùàƒš‹ŠŠâ/ùK‹÷´u>88½^ÏØ±cÛ¨B!„⪠ÔcúôÓO{8!lG1]Àl6“••@HHŽŽŽTUU±sçNBCC æìÙ³üôÓOÄÆÆŠF£á矦²²­V‹Á`PWOªc2™ÈÌÌdÇŽ$&&¢×ëùâ‹/ˆˆˆ`òäÉ×ô*ûöícÔ¨Q2,I!„B!ÄUM1]Àb±PXXÔ.µpâÄ 6lØ€ŸŸãÇgĈ¤¤¤OYY™: ¯··7ÞÞÞ –t®©©aÇŽœ;w;;;ÂÂÂðòò"77—ÔÔTV¬XAdd$‹¥É¦kÁîÝ»™9sfO‡!„B!„BtŠ$bº@Ý1P›”5jìß¿ŸœœÖ®]Ûì½ŽŽŽÜtÓM¸ºº¢( •••\¾|™¬¬,²³³éÛ·/øúúrþüy"##ñööÆh4röìY, —/_¦ªª ;;»Éœ«UVVIIIŒ3¦§CB\ƒÒÒÒ8uê”${ë±X,¬X±‚¥K—öt(B!®3uÑZ:Ö‘Õ–„è­$Ó´Z­:„&''¨]èž{îaÖ¬YìÞ½»I"ÆÎÎ///"##=z4&“ £ÑÈÁƒÉÌÌÄ××—   ‚ƒƒ9~ü8ÄÞÞž .п†Žœ={–ššFŸŸ_YjnÎ˜Žœ âÇ´eHB¡ÊÊÊ¢oß¾=Æu¡¢¢‚/¿ü’ùóçËPS!„¸Nùøø——ÇÉ“'ÕÕ„¸ÞH"¦ ØÛÛ@zz:¥¥¥¸¸¸¨çbbbX·nþþþâííMPPýúõ£°°øøxΜ9Cß¾}1bV«•3gÎpâÄ ìì숈ˆ 00ììlÒÒÒØ²e ƒ&**ŠòòrJJJøæ›oÿüs Ĺsç?~<ƒ&''‡={öP^^ŽÁ`à–[nÁÏϯÅö:tˆ’’n½õV, _ý5·Ür \ºt‰={öP]]‡‡©©©<ùä“Wô¾üñÇ„……‘••…¢(ÄÆÆÀ;ï¼ÃO<@^^»w寮¼'''f̘ÁÏ?ÿÌÞ½{8p “'OfõêÕ<øàƒê=;vì`îܹ;/yŸ[Ó\9ã›9sf³í¡WBÑyÝÝ#&33ôz=:N]ÅV’D]ËÞÞ>(,€¹ÑO°6ÚVêmSo¿þ‹zç©wLiæXãí–Ø,‰ C“ºˆ½½=cÆŒ!33“ÂÂB>úè#–.]Ê 7ÜÔþcž1c£GæÛo¿åÔ©STVVRYY‰ñññFÑëõÔÔÔ0lØ0ôú¦l~~~ÜvÛm$&&rúôiRSSÙºu+ÞÞÞÄÆÆâííMNNÛ·oÇ`00pà@t:]·¾'BÑ’ŠŠ ¶mÛÆœ9spssãðáÃìÝ»—iÓ¦©×TWW³iÓ&fÏž··7iii$%%µYöHIIaâĉôíÛ—´´4Ìf3$33SMµV~Ý777ªªªX½z5$ ³ÙÌÍ7ߌ‡‡gΜaóæÍ,^¼777Ž?Ξ={¸÷Þ{[lã Aƒ0,^¼FƒÙlÀ`00bÄ\]]())ÁÝÝ%K– Óé0™Llܸ‘»îº ooo’““ùþûïY´hQ³ÿŸÔÿ礤¤‘‘Á Aƒ TÛ~÷Ýw«mOII¹â÷½²²’aÆ1yòdŒF#ëׯgÉ’%888¨×ÔÔÔ°qãFfΜ‰¯¯/••• ¢££INNfâĉøûûSQQÑj]ߗ޾Ï-iíïdýøZj‡BˆÎ“!IâZ%‰˜. ( f³ ıcǨªªâÍ7ß$&&†ûî»Oý%ÙÇLJßÿþ÷>|˜•+W’ŸŸÏ¦M›0 ôíÛÐh4hµZ©®®nR§^¯G¯×Æ€8sæ ?ÿü3ÉÉɬ[·Ž0lØ0ŒF#ÅÅŘÍfIÄ!zK—.Q^^ή]»€Ú^…u«ÎÕ¿ÆËËKFT÷Ùšœœ¬V+Ó§OgÓ¦M̘1ƒC‡©½Y²²²˜8qb›åkµZÌf3‡¢´´”òòrÊÊÊÔsDDDðŸÿü777uÿÈ‘#­¶ÑÃò²2víÚÅÀ @§Ó1zôèí2dHƒ÷ÃÃÃCwÀ€>|˜‚‚‚{Åh4¦OŸÎ¿þõ/|}}Õ^%F£OOÏfÛÞÚûRTTÄæÍ›ÕòÇŽKhh(Z­___pss#77—~ýú©×Fúôé£^çèèØâŸc[¿/yŸ[Òž¿“¶n‡B!®’ˆ±1‹ÅBnn.GŽáâÅ‹SÔÁƒIMMåw¿û]ƒ.ü£GÆ`0ðþûïPUUEzzºÚ ÎÍͲ²2Ž9BQQQƒ2u:ƒ âÆoÄÁÁ­VËðáɈˆ >>ž„„’’’08;;ãáá!C“êY±b=ôP§¯B\9¹óÎ;[¼FQ”vùùù©I‰É“'óÃ?B`` V«•¢¢"5ÁÐZùu= 'OžŒ——………ÍÎÒ8Á]¿µ6.^¼˜äädΞ=ËÞ½{™7o^“nÐuÝ£ëX­Ö&ñšL¦&×5VwN§Sëh®¬:­½/ÌŸ?¿ÉñÆó‘iµÚ&ïÉdjwÒ¢µùÍ··³ïs{Ê©¯#íB!„™¬×¦ª««ùÿìÝytTež?þw-©-©J*ûJ„%lY• n#¨ õ´"‚"ݶã¯{¾ˆÓ=gN;=:nˆ6*"AFífsadSH@ƒÙ÷¤Rûv¤s§²TÖªTï×9urëÞû<÷s ’T>õ<Ÿç»ï¾ÃÛo¿o¿ý H$6lnºé&Œ7Z­•••xþùçQZZÚ¦ý„ Ä%ÜZkÀ‚¹\.~{îÜ9„„„`üøñÈÌÌDff&Fމ‚‚‚÷U*¦OŸŽiÓ¦A*•bìØ±˜1cF %’o½÷Þ{x÷Ýw±mÛ6äååá»ï¾Ð2|ÿÝwßívè=ѵ.66MMM¸rå €–Ÿ}‡.— §N‚ÍfC\\ÊËËQUU¨®®GzžçMBBxàqLee%bbbÄŸ‡]õ_WWµZ˜˜¸\.”——÷zT¡·{´Ùl°Z­5jî¸ã466Âf³u{Oqqq¨¨¨kÓ´Öc‰ˆˆÐ²²OgÉ¢Ï>û 999Ðh4ÈÏÏïöÞ»:Ö•~øP[[ £Ñ(Žñ|=ÊÊÊP__ eªRë‡ jµƒAÜv8(//Ð2R¥õXgzû:{{­¼õÓ>¾®îƒˆˆˆ¨3ã#‡ùùùصkœN'¢££ñ‹_ü&LhS°Ïl6cóæÍøñÇñ·¿ý ëÖ­kÓÏ=÷܃³gÏŠÅ 9‚n¸ƒAüöܹsˆŽŽÆøñã¡V«ÑÔÔ„sçÎy-,, @K¡ßÄÄD&aäž{îV«Ess3öìÙFƒ´´4Ìœ9“Ÿ¦Òu/((óçÏÇáÇqüøq( Lœ8ñññ8sæ † †èèhdggã³Ï>ƒT*ETT”˜´¶Z­mÎ뉲²²6#Õjµ×þGމ«W¯âwÞZ­FBBB¯1Þî1$$ÇŽƒÑh„Ëå”)S R©`2™º¼'µZyóæaÿþýp¹\ ANN¤R)AÀ™3g0mÚ´6mNž< FƒÔÔTÄÇÇcÇŽHHH@xxx›{‰‰V«íöuéÊÕ«WqâÄ (•Jääät¨[‚9sæ`Ïž= ‚Z­Æœ9sÄÕ>Œüü|ÜsÏ=âyjµ]ÂííëìíµòÖϨQ£¼Æ×þ>ˆˆˆˆ:ÃU“|@”••áÝwß…ÉdÂØ±cñØcuZ»Àh4b÷îÝ8tèâãã±aÆç<ùä“0›ÍP«Õ°X,X·nNŸ>üü|¤§§ãÛo¿…T*Åüùó1qâD˜ÍfäååañâÅïÐ_uu5^yåq:1m ÄÔ¤÷Þ{óçÏÿ°¹páÊËË1gΜ>÷IÞqÕ$ÿóǪI½e4ñÉ'Ÿ`Ù²e}jÿÓO?!22Rü¾ôuÿd4ñÁàá‡öKßݽ.ž+# vþ|­ˆˆhháªIÁU“¨O, Μ9“É„ÈÈÈI˜Ó§O£¨¨W¯^Eqq1\.$ ²²²:íO­VÃl6Ãb± ""£GÆ¥K—`4ñÐCÁétâôéÓ8zô(RRRzôɤ¯ÔÔÔà›o¾—J1c¢¢¢yyy9r$ qË-· -- øæ›oàp8 ×ëQ]]åË—·éS;v ÅÅÅJ¥HHHÀŒ3`±X°sçNñÍ~]]Ž9‚{ï½¼öm2™pøða444Àår!==S¦Lñc«®Ú ‚€ýû÷£¶¶r¹Ó§OGll¬×Ø»ÓZ\h›äÙºu+†ŽŠŠ q¹ñÖâ–ÞŽ}þùçHJJ—GÏÏχÙlÆ-·ÜÒ·d¢AÌh4B¥RA.—£  ©©©}îkøðá~í?ªªªÄå¢}áZy]:ãë׊ˆˆˆ¨;LÄø€ÅbAaa!à¿øE›$Luu5Þxã6ç1999;vl§ýY­Vq{üøñH$ˆˆˆ€Óé„ÉdBnn.Ξ=‹ÚÚZÔÔÔx]Ã×ìv;>ýôSüò—¿Dxx8®^½ŠÏ>û ¹¹¹Édhnn†N§ÃÒ¥K!•Ja·ÛñùçŸã®»îBDDJJJP\\Ü¡ßÒÒRTUU!77·GKжÆâ­oµZ3f@§ÓÁf³açÎ>|8bbb:Äè©«v0yòdDDD ´´Ÿþ9rssQYYÙ«ØA@EEòóóqë­·v8nµZ1vìXÌœ9UUUØ»w/–.] …BáõXzz: ÄDLQQn»í¶n_C¢¡èòåËmêšÌš5kHõ?PRSS}š,¹V^—Îøúµ""""ê1>àr¹ÄeLÓÓÓÛ‹ŒŒÄ]w݇Ä„Œ5ªÓéC­ L&$ A§Wdff",,LB?lØ0\¹rE\rt TUU!44T¼^rr2Μ9ƒúúzqTÌèÑ£Åó+++¡×ëÅ‘ñññ®¼“É„¯¾ú )))=šÚÐUß­…OŸ> £Ñ³Ù “É$¶õŒÑSwíZ¯•˜˜ˆ°°0ÔÔÔô8v“É„¼¼<„„„@§Ó!33ñññΓH$â .111Ðét¨©©ABB‚×cIII8zô(¬V«XH²u)]¢kÍĉÅ¢æC±ÿ¡ª·¯ËP™–DDDDLÄøHk½„ö«.H¥Räääô¸ŸÖU&Z1­ý*•JŒ7N<¯5éÐÐЀúúz¸\.X,–NWßiMõwn£ËåêHq8^çNvµª'­V‹ÜÜ\\½z………8qâ„8ýÈÛ’¥]õ]SSƒ#GŽ`ÆŒGcc£˜ èê5èM;§Ó ©Tê5ööç·©ãMûÚEžK¾z;&•J‘ššŠââbØl6Œ5ªËkQàpùjP( вf_ ‚€C‡‰Û@K}™öl6®^½ øþûïñþûª ï¾û.þçþ§Ã#//z½!!!ýJÆÄÆÆ¢ªª ÕÕÕZj´¸Ýn¯£/bccQYY‰šš-K˜¶&ªÜn7¾ÿþ{Øl6ØívØl6Œ1·Ýva·Û¡R©àp8Ä¥Y+++ÑÜÜÜmß P*•ˆŠŠ‚ËåBeee—«›Èd28Î.Û ‚ ÞwMM Ìf3"##½Æîy½uñâE@}}½Xw¨»cééé¸rå ®\¹‚‘#GöúšDDDDDD408"Æ‚ƒƒ1räHœ9s‡†V«Åܹs{µ´©ÕjŇ~ˆŸ~ú 2™ QQQ¨ªªÂùóçñá‡â®»î‚F£Amm->øàX,!--M\"³³¢½‰‰DœNÓ*• YYY8r䈸Têܹs;ÔZñ<öìÙ8xð ¤R)"##ŵV«çÎCbb"\.Nž< “É·ÛÌÌL±ÎάY³ðÅ_@­V#,, ¦Û¾‡Ž’’¼ÿþûP©Tˆõ#dddà“O>AVV–×v2™ §N‚Á`€J¥Bvv6är9ªªª:Ýl6‹÷×ÙêY])--Å™3g T*Åëtw,<<&“ Z­*•ªW×#"""""¢Ãå«}¤¬¬ ü1*++!ÂÃÃqóÍ7cÔ¨QˆŽŽGÌ-S|PWW‡êêjáâÅ‹b‘Þ#F`æÌ™Ø¿?JKK[^‰J¥R!•J‹ØØXŸõ)—ËÛm%""""""¢¡‡C+ˆˆˆˆˆˆˆˆ1DDDDDDDD„‰"""""""¢ÂD Ña"†ˆˆˆˆˆˆˆh€0CDDDDDDD4@¸2Q/X,Øl68Î@‡BDDä7r¹J¥jµ:С]s˜ˆ!""ê—Ë…ææf&`ˆˆèºàt:át:a³Ù Õj!“ÉÑ5ƒS“ˆˆˆz€I""º9N477: ¢k GÄxa±X`·Ûár¹ B Ã!ºîI$Èd2( ‘¥g±X˜„!"¢ë–Óé„Åbá{0"a"¦—Ë£ÑÈ7ÜDƒŒ âY»ÝŽ‘¥c³ÙQ@Ùl6&bˆ|„S“Úa†hðs:0ƒ®#ü½@DD×;þ.$ò&bÆ™LX½z5-Z„Ï>û çϟdž pã7bÑ¢Exæ™g0yòdÀÅ‹±nÝ:ìÝ»Wl7}útœ:u EEEˆ‹‹Ãš5k‘‘Ñ嵦M›†“'OâÊ•+HLLĺuëpþüyìÝ»UUU˜4i~ó›ß 44@ËÔÚ·Þz ‡†ÝnÇ´iÓðØcA­VhYìwÞÁÁƒáv»qóÍ7·¹ßÕ«W#''óæÍƒÓéÄ›o¾‰ãÇ£¶¶QQQXºt)î¸ãÿ¾èDD4d1ßÿ=V­Z…M›6A"‘àñÇGaa!RRR‘_0ã‚ ÀÐl t=¢$E„‰ˆz£ ¬m&ü[‘¸=m”¦C›ÖdÌŽU‰ÈH¸d̹sç0qâÄ6ûþøÇ?â‰'žÀ#<‚ÄÄÄõc0ðÖ[oáå—_F\\Þyç<÷ÜsÈËËë}µ¿–Á`ÀÛo¿W_}ÑÑÑØ´iV¯^ àÙgŸ… ظq#¶lÙ‚õë×^yå455áÕW_…ÓéÄóÏ?7ß|k×®lÙ²gΜÁsÏ=•J…wß}×kÌr¹ ظq#”J%>ŒçŸ£GFRRR¯^G""º>¼òÊ+X¹r%ŠŠŠ°jÕ*H$\ºt ñññx饗‘_0ã#M×É”Ÿ^x_}õ€–7Üqqq¸ãŽ;0oÞù/¾ø"RSSëׯǼÆ}÷Ýw‹Û¹¹¹Ø·o~üñG&bˆˆ¨SÑÑÑØ¼y³˜Œ€ØØXlÚ´ ñññŽŽÈ?˜ˆñA¸~¦üdggcÙ²e°Z­8{ö,¶lÙ«ÕŠû_ýîØ±•••xòÉ'Å}DAA^xáH$hµÚ^÷{óÍ7cĈýŠˆKÒÅÌÏÖ$ÌK_ÔáÅÏëzÕÖ×®^½ ‡ÃÑ¡fËØ±cûÔŸÄ#øØØX¨T*X,–.¯åÙ&99`±XÄDKrr²ØGii)Ün7žxâ ±Óé„Ùl”——Ãív·¹FwI÷¦¦&8p0(//‡ÍfëÓýÑõA.—C©TŠÏ  E#"ò/&b|Dæ‡Ñ ƒUPP4 4 n¿ývF|ôÑGýNÄt¦¼¼©©©â}±dÉFDDð?Kc‘»©Ôë¨x~_m‡}a8yqa IDAT^\ëÏÐÚ8wî\›š-Ýz9]Ô3ÉÒ“kI:ÉByî lÚ´ :®Ã¹N§³¥šË%N‡êŠÕjÅš5k0cÆ <ðÀˆŽŽÆ“O>ÉúdDDäU]]V­Z…+W®ˆ5aŠ‹‹±jÕ*lÞ¼ Șˆñ™tpêõ§±cÇâwÞÕj…J¥‚ øøãqèÐ!455aôèÑxä‘G  eêÐüùóqèÐ!â·¿ý-~úé'üío;v wÜq\.¾øâ À—_~‰¤¤$üå/é¶ÿöÚOUêm{" ¼ŒÞ_•„Ü×KÐ`j›ŒIZ_ØiZŠ÷V¾>Œ7*• ?ÿü3n¸áq_o3½¹–7111Ðh48vì²³³;ožŸŸ/î*Æ‹/¢©© +V¬÷]¾|555ýŠ“ˆˆ®]k×®“0›7o¬\¹ÅÅÅX»v-¶oßà‰|‰ñG}”¡¢¡¡z½*UË;|ðNŸ>§žz J¥ï¾û.ž}öY¼ôÒKâ'ªÿýßÿ•+WbÙ²eˆ‹‹Ãĉa±X:LMÒh40 ø—ùq_OúïJÛQ`ŒKPbûÊÄE{?^; ‚ÜûòÏâ¾0,`+&ýêW¿êѹãÆÃ¾}ûpë­·Âívã…^€Ãáð˵¼‘ËåX¼x1Þ|óMDFFbÒ¤I¨¯¯GCCÒÒÒ ÑhpçwâÅ_Ä3Ï<ƒèèhäååyíO¯×Ãd2a×®]˜5k¾ûî;- ""¢Î"==/½ô’8úeóæÍX»v- ;ÿ°…h¨»~³>&“J‡Ä×\.~úé'lß¾óçÏ8üãÿÀÊ•+1lØ0ÄÄÄ`íÚµ0›Í8yò¤Ø6++ wÞy'RRRÚÌíNOû÷W{" ¬ñ‰*ä=–ˆ0ÍÿMÇ„–G«@%aÊÊÊ`±X:ÔlñæÑGEdd$yälذ³fÍ‚FÓqõ'_\«+K–,ÁâÅ‹ñꫯbþüùX¿~=.^¼(_³f &Mš„?üáøío‹ÈÈHÄÆv>Ý+)) +V¬ÀÖ­[ñàƒâ믿ÆôéÓû#]»N:…íÛ··™‚íÛ·ãÔ©SŒŒÈøñ¿\OS“vïÞÝ»wC"‘ ::999˜;w. ªª .—K\]”J%ÒÒÒPVV&îk]Ñ£·zÚ¿¿ÚQàOl;MÉs$Lët¤NÂ-S…222:Ôlyíµ×:=_¯×ãOúS›}÷ß—ívíÚØ·o_®„ýû÷·Ù—™™‰;vˆÏ% .\ˆ… v§R©Ä“O>Ùf´bWq.^¼‹/î´/""""b"Ægú;ÚD­ Gò„™HeA|¸ÝnX­VØ,&Ô—Õ䣈û.++ =ô‚‚‚Ôæ˜Ãáè´°cgçöEû÷w|D40Æ%(±ã±¶5ctj)òKÂĤOÂ-KG/X°àš»ù1>"¸ÝË{¶JFgÒnùÆÞ¶n·[|¸\.466 ±¡ pKƒÐøã‘>_Ãéô¾ÚHo¨Õj¯Ãç[‡«ÿðÃ?~<Àívãòå˸ãŽ;z£³Ëãýí¿¿í‰hð— DÞc‰X—W xqIì€æmoÚ´i×䵈ˆˆˆÈ·X#Æ$ MVH¥Ò>?BãF´I¸Ýn4š`04Á`0 B¢’ûuz£µÓ¥L}I­V#++ ›7oFQQñÖ[oA§Óu»ºGdd$.\¸€ššØl¶>÷¯ÓéP]]ÝéÊý‰ˆŸŒö?•‚ýO¥4 CDDDDÔSã*• •6Â]N(ƒúö’J$Ò6I£±ƒ͆&¸Ü.(•j¸ƒ}®Ecs8Qi׊+ùÓÃ?ŒmÛ¶áÏþ3œN'&Nœˆû·ë6 4kÖ,œ9sëÖ­CFFžyæ™>õŸ““ƒÍ›7ãçŸÆÓO?í³øˆˆˆˆˆˆˆúË×yö¤?I7Ûžû¤ûÚ?Z·>oÝ–µÛ–·ûª­­­=ÞÙh‰ººº„ß‘ øæë¯ðýÇ/ 51ñÑzõršÒ‹žAôðñp»Ý0™Lhl¬GcC, ”*”J5,µWQùõÖ^õëpºP^݀˥µ˜tÏ“˜:m:tMñ¬°ßª±±ÉÉɈæúÑú3´u¥ÓéDss3™ÔÖÖ:""¢€‹ŒŒ t~UZZ ­V ¹\™Lé?ë€òï'ÿR(S4pp¶û*p·Û<¶áñÜóãðØ't²¯ý¶7=9§G8"Æ$ ÒGAq˜WKÊpª ¡Z ÂtÁˆÖ‡":B‡`u7K4‹…y-h64¡¤äg˜ŒFDEÇ@¡hÅâr:»cµ9PרŒêúf4Œ¨i4 J«FXx,ÒGá""""""¢b"ÆG¤R)$ 4J9ä2)ÂÔ2ÈÜ.”WÕârI%$B­ ‚6D ]°º 4*Š 1¹b·ÛÿY¦ 6<‰D‚_|2™ f³N§R©n·»Ã³ÕƒÑ‚&£Í&3,6;·µR…\K¥Ð¨äH$bF—ˆˆzG.—w[LœˆˆèZæ¹â(õ¿›|D"‘@¤„>* u&bþ¹:O`µ;Po0¡¬ºv‡N§$ÜnBZ ó M¸ï¾ûAA X,X­VTÕ6⫯ÏB"‘@&“A$‡Z¥€Z„¸h=$Ì «3:‰&§š£aˆˆúH©T2CDD×5¥²›þDÔcLÄøˆD"A*!*™÷„‡P)ƒ RA¯ nsH*ÄU’d29222 “É`µZa±X`6›!—I0*9®×qÃdU1CDÔGjµ6›É""º.Éår¨Õê@‡AtÍ`"Ƈú“è°Ym0 M€(TJ„†…ÃápÀh4Âb±Àd2Ái·$6""´Z-š››™Œ!"¢ëŠ\.‡V« tD×&b ‹© i0Tj5 ìv;Ìf³˜„1™LrX&ÑuK&“!,, ‹…£cˆˆèš'—Ë¡T*9†È˜ˆ$J¾?ˆ¢drd2drä2)d2äò–¯BóO“ˆèº§V«ù¦”ˆˆˆˆúŒ‰˜A¢¾¬á^޹ÿùp `‰ïìÙ³9r$F ·ÛÝ£6‹»víBNNkU !CƒÂ©S§ÐÔÔä—¾>ŒÉ“'cÑ¢E¸ñÆqøðá üü|X­]¯Jõ‹_ü .Dvv6ŠŠŠPTTÔ§xÚß«Á`@TT@*íÙ·¤J¥Â”)S R©ú14(ÔÔÔÀáð}9b—˫Պ˜˜@\\¤R)\.—xNCCª««1räÈõ‚qãÆ¡¬¬¬O1µ¿W·ÛÝãL+‰D‚aÆA"‘ô)"""""" NM¢^©®®Æ‰'àp8 ÓéÚ$***pòäIØív„……aÚ´i8qââââ––¸pá¬V+n¸á±]AAª««±gÏ 6 ·ß~;ðí·ßÂb±@¥RaÖ¬YÐh4p»Ýøæ›oPUUA0eÊÄÇÇãìÙ³0™L˜:u*\.öìÙƒ)S¦ ::ÉÉÉ8|ø0&Nœˆ¢¢"Œ3AAAZ’ ÇÇôéÓqåÊ•¿-ËŠ·|ûÔÕÕáĉ°X,P*•¸å–[ عs'†Ž¢¢"Üxã°X,mî5$$uuuøÇ?þ°°0Ü}÷ݨ¯¯÷ÚŸ§mÛ¶aùòåÝÆ@DDDDDDƒ1Ôcv»‡ÂwÞ ½^òòr”––h©YrôèQÌ›7Z­ùùù8}ú4F…üü|1såÊÌœ9³M¿())ÁM7Ý„ÈÈH8N8p³gÏFxx8l6 …xþ˜1c0uêTüôÓO8~ü8î½÷^L˜0Ÿ~ú)JKKQQQáÇ#::0yòdìÞ½{öìADD²²²Ä¾Î;‡äädhµÚ½‚  ºº?üð233áp8pðàAÌ™3z½%%%8tèî½÷^Èd2Fèt:üêW¿G½xÞ+TUUaÚ´iÐëõÝö×™¾´!"""""¢ÀàÔ$걚š„……A¯×bbbÄIMM , ¾ýö[ìß¿¥¥¥hjjB\\ŒF#Ìf3 är9t:]·×Ñh4(•Jq ŽT*¯Ÿ’’“É eªÎôéÓqàÀTUU‰wm6>ÿüsÜ~ûíX¾|9ÒÒÒ°k×.FÔÕÕ¡¢¢cÆŒéöÞÍf3vî܉>úgϞŤI“‹êêjèt:1¦¤¤$£¡¡Al;räÈO=êI¾hCDDDDDDÁ1Ôcn·[œÒÓ^PP¢££1gΜÇRSSqõêUØívŒ5ªÛëØíö¡•H$mj¤´&…¤R©¸¿¢¢aaab˜´´4ÔÔÔ ¤¤MMM0›ÍøûßÿbÝ¢¢",X° Íµ4 æÍ›‡6û;{M‡8¥·µ_ºëÏWmˆˆˆˆˆˆ(08"†z,** ÕÕÕ¨­­Ô××Ãn·‹ÇŒF#JJJ´Láq:ZF„üôÓO())Arr2€–äAAAØ^¥RÁh4Š}UUU¡±±àt:!B·ñ=z·ß~;Ôj5.^¼Ðét¨®®kʘÍfTVVB§ÓaÊ”)¸ï¾û°`Á,X°“&MÂ7Þˆ tˆ¯§¯IUUÜn7BCC½¶ñ¼×Þö×¾Ðp_c """""¢Ààˆ‘H$pKdnõMFH¥]ÑÆíA€ n‰¬ß+ì¨T*LŸ>_}õ¤R)"##Å"r¹³gÏÆ‰'pöìYaôèÑHNNFHH¬V+ÂÂÂÄ·6› .\@\\"""0nÜ8œ8q/^Äœ9s0uêT9rr¹*• S§N…Z­ö[~~>Ôj5† †èèhìÙ³111ÇM7Ý„cÇŽÁf³!((cÇŽEBBB—÷Ú>¾®^“™3gâ›o¾Ûí†F£ÁìÙ³» Óþ^{ÓßèÑ£±wï^Ìž=»_1QßY,Øl61ÙLDDt-’ËåP*•]¾'¢¾ñu¦ 'ýIºÙöÜ'õØ×þÑz¼õy붬ݶ¼ÝWmmmíñÎFXÔÕÕõ üΙL&ìÚö "ÅV«p¥¤§»ÏýùB\Šá‰q0Y,¨S¤ gù¿ 888 1ùZg‰²ÆÆFqôùGëÏP·Û —˧Ӊææf$&&82ÿq¹\hnnf†ˆˆ®+r¹Z­öº˜ö^ZZ ­V ¹\™L&~°Ùß´©k …b €f.Îv_îvÛ‚Ç6<ž{>àqû„Nöµßö¦'çôGÄøHPP"Ra: .·€„ØŸg¹úÂd±Àdv"k4Èår%$$ är94 BCCYæ:–_jÅý›J`´ºñÿæG#ÿ#ñÝÆTüwEÁb°ls)òK—Œq»Ý8þ<&Nœ°¦NŠ‘#GìúDDDDä‡~x¡V«9íˆhÉ/µbÉë¥h4»ðÿîŽÆŠYzñتÙáJ€?îªÁ’×K‘÷X"Æ'ª<Æ¢¢"‚€Q£F øµ[ýú׿ص‰ˆˆz#33“&MÂóÏ?½¾å÷zSS~÷»ßáôéÓ8uêT€#$ò=&bˆˆhHðLÂÀ¯nÒr7•À-¬N¯n ÅwÕ Ñì X2&??ãÇGm­^½Ó¦MÃÉ“'qåÊ$&&bݺu8þ<öîÝ‹ªª*Lš4 ¿ùÍo p:xë­·pøðaØívL›6 =ö˜øËåÂ;#ƒÂívãæ›onÃêÕ«‘““ƒyóæÁétâÍ7ßÄñãÇQ[[‹¨¨(,]ºwÜqÇ€¾.DDD1b¾ÿþ{¬Zµ ›6m‚D"Áã?ŽÂÂB¤¤¤:<"¿àÔ$""ô ÊÚ&a`¿!i}!¾ºdFg³H[“1½šÒ¹sçÚLK2 xûí·±jÕ*lݺ‰‰‰X½z5ÊÊÊðì³Ïâµ×^CEE¶lÙ"¶yå•WPQQW_}›6mBEEÞ|óMñø–-[pòäI<÷Üsø¯ÿú/X­ÞïQ.—#!!7nÄ_ÿúWdggãùçŸGII‰^""¢^xå•W””„¢¢"¬Zµ «V­Baa!âããñÒK/:<"¿`"†ˆˆ½µïU¶IÂxúxí0¼¿* w¼±Í±F³ Ol¯ô{|­A@~~~›DŒN§Ãúõ둞ž½^… –.]Š„„$&&";;³ÙŒ½{÷âñLJ^¯GTTzè!|ýõ׻ݎO>ùëׯGjj*°~ýú.ãºû’’‚¸¸8äææ"66?þø£Ÿ^""¢ž‹ŽŽÆæÍ›ÅdÌ¥K—‹M›6!>>>Ðáù§&Ñ ×UÝôÌ”–é:/}Q‡?¯ëU[_»zõ*G‡ú0ž…ß“““‹Eœ Ÿœœ ‹Å(--…ÛíÆOéëòåË⧢ݩ««óÙJˆ‰‰ñI_DDþ”‘ Âû«’ûz Lm“1Ië ;m£SKñÞÊDd$ \±Þöõaú"&&ÇŽCvvv‡ã­Ã´óóó1yòd-S¢¼¹xñ"ššš°bÅ qßåË—QSSÓ¯8‰ˆˆ|aíÚµbfóæÍ€•+W¢¸¸k×®ÅöíÛ!‘ï±FÌ Ð›ááv»Ý‘ ^ã”ؾ2aš¶£M>^; ­Öf_˜F†÷W%abÒÀ¯˜ÔßDŒ\.ÇâÅ‹ñæ›oâôéÓp¹\¨©©ÁÅ‹wÞy'^|ñEüøã¨¯¯Ço¼áµ?½^“É„]»vÁ`0àÈ‘#ÀD< ………HOOG¿DDD`óæÍHOOGaaç¶ u3´Cï FãÇHˆˆ·ñ‰*ä=–Øf%Ahy´ ÓȲluYY,‹OF-.Y² …¯¾ú*ª««¡×ë±xñb¤¥¥Ö¬Yƒ×^{ øÃ Óépçw"6¶ó)XIIIX±b¶nÝŠ·Þz 7Ýt¦OŸÞˆ|áÔ©SöEDDp$ ]Ó|]°'ýIºÙöÜ'õØ×þÑz¼õy붬ݶ¼ÝWmmmíñ®†q÷„¯¦&i4”””tZ3 3n·‰‰‰].UÚSœšD×ªÆÆF± *ùGëÏÐÖZ%N§ÍÍÍHLLëŸ/³u:MI§–"ï1ß„©­íX¦½}ûöáèÑ£øÿøŸ^›ˆˆh°ˆŒŒ t~UZZ ­V ¹\™L&ÃïéßjÔ7 …b €f.Îv_îvÛ‚Ç6<ž{>àqû„Nöµßö¦Iœš`#GŽìÕ7¶T*õY"¢¡j\‚;K‚>øÿ¦)ù+ ÓS: ,ȵ‰ˆˆˆhè`"&À¦L™Òë67ß|³"!"ZÆ%(‘÷X"Òã”HSâƒÕKÂÀ´iÓøó™ˆˆˆˆºÅDL€Ý~ûí½n“••å‡Hˆˆ†žŒö?•‚ýO¥ èêHDDDDD}ÅDLEFFböìÙ½n7{ölDDDø!""""""""ò'&bèá‡FPPP¯Û) <üðÃ~ˆˆˆˆˆˆˆˆˆü‰‰˜‰ˆˆÀÊ•+ûÜ~åÊ•÷aD=ó§?ý sæÌÁœ9s0wî\<üðÃøè£àv»»oüO«W¯Æ¾}ûzt¬«s‰ˆˆˆˆˆˆ†&bdÆ  ës{½^ 6ø0¢žËÉÉÁßÿþwlß¾‹-Â;#;v$"¢ —ËQ@ñw!‘ï0sçÎÅÒ¥KûÝÏòåË‘““トzG¡P 88ÈÎÎÆƒ>ˆ>úhÀã "(J¥2Ð!ùÓšlܸqØ´i$‰Oú{õÕWQRR‚ï¿ÿÞ'ýõÅøñãÑÔԋŵZE‹á™gžÁäÉ“/^ĺuë°wïÞmM&Ö®]‹Ûn» Ë—/ïò:N§o¾ù&Ž?ŽÚÚZDEEaéÒ¥¸ãŽ;ÄsV¯^éÓ§ãÔ©S(**B\\Ö¬YƒŒŒŒ·ÏÎÎÆ—_~‰K—.aذaX³f ÒÓÓ{Ôvî܉={ö ¡¡cÇŽÅš5kÛŸ—˜ˆL­VÃf³Áét:""¢'—Ë¡V«Ñ5ƒ‰˜4qâD|øá‡ õYŸ!!!øàƒ°hÑ"œ={ÖgýöF]]"""zýÃÙåráßÿýß‘ššÚmhù€7B©TâðáÃxþùç1zôh$%% Þzë-¼üòˈ‹‹Ã;#çž{yyy=j/¿ü2^|ñEÄÆÆâÃ?Äï~÷;lß¾!!!ݶÿàƒpðàAüë¿þ+ÂÃÃqîܹ~MA#¢ÁC«Õ¢¹¹™É""º®ÈårhµÚ@‡AtMáÔ¤’““ƒ]»v!**Êç}GEEa×®]>MÉår¡¨¨o½õ.\Ø«¶‚ à•W^ÙlÆSO=Õãvwß}7RRR‡ÜÜ\ÄÆÆâÇët:¬_¿cÆŒAXXî¿ÿ~Ô××£´´´Gí`ýúõÈÈÈ@dd$V­Z…°°0:t¨Ûö.— yyyX·nÒÒÒÄåÉU*U¯^"œd2ÂÂÂÌyòDDtÍ“ËåFXXd2Y Ã!º¦ð¤Ÿ…‡‡ãÙgŸÅ²eËüzlݺÛ¶mÃÆQ__ï·kíܹ;wî„D"All,î»ï>ÌŸ?¿W}|ú駸pá>üðÃ^-áÝÔÔ„   F£ååå°ÙlmÎñœö •J‹ÅÒ§ö‰cÇŽ9]µ¯¬¬„ÅbAZZZ¯^ "ZÔj5‡gQŸqDŒŸDDDàé§ŸÆ©S§üž„ñ´|ùrœ¢V«1a¬X±;vìÀ… ðôÓO¤>ˆ^¯ÇÓO? .`ÇŽX±b&L˜à³Opƒƒƒìu$‹J¥ÂÏ?ÿÜf_ûäDll,~ÿûßãý÷ßDZcÇztÝ‹/¢©© +V¬@JJ 4 ._¾ŒššŸµ¯¯¯Çîݻ۴+,,Drrr·íãââàv»QXXØ£xˆˆˆˆˆˆèúéI}$‘Hðã?Âét"88اx}%((ÙÙÙÈÎÎ÷555Ád2A£ÑÀl6ûåºãÆÃ¾}ûpë­·Âívx| ” IDATã…^€Ãáèp^ff&|ðAüçþ'^{í5$$$ 44•••‰¤Ís½^“É„]»vaÖ¬Yøî»ï111=Š«'í•J% ñÝwß!55Ÿ|ò Ìf3fΜ‰ŠŠŠ.Ûët:LŸ>/¿ü2~ÿûß#""gϞŤI“8® ‰DüÞ%"""Jø†GÄôCXXâããeÆ›ÐÐPÄÇÇûu¤Î£>ŠÈÈH<òÈ#ذafÍšFÓé¹K–,Á„ °qãFØl6Üwß}8pàž}öYhó<)) +V¬ÀÖ­[ñàƒâ믿ÆôéÓ{WOÚã¶ÛnÃK/½„eË–áÂ… øË_þ¹\Þ£ö¿ùÍo0|øp<ùä“ÈÍÍÅßþö7 †Þ½€DCL뛉D—ËàhˆˆˆˆzÏårµyOCäO¾þÖ“þ$Ýl{î“zìkÿh=Þú¼u[Ön[Þî«¶¶¶öxëxTWW#"" …¢_ýRyyyG“\/V¯^œœÌ›7/СP?466"999Ða\ÓZ†ºÝn¸Ýn8NX,hµZ¯‰W"""¢ÁÊl6£¹¹jµr¹R©RiËŸ£LÌø—B¡˜ € €³ÝW€»Ý¶à± çžx‡Ç>¡“}í·½ñY1PŽˆ!"¢>óüäH.—‹E«‰ˆˆˆ†£Ñ¹\ÎQ14 ˜ˆ!"¢~‘H$J¥Édp8Ö„""""¬Zß¿Èd2H¥R&aÈ!"¢~‘H$b2F¡P ¾¾>Ð!õX}}= …˜„a"†ü«&yxíµ×ÑÐ~…¤Ö7-r¹V«ÍÍÍÐjµŽ’ˆˆˆ¨kÍÍÍp»ÝP(âûÏd “2äCDDý&‘H “É “É P(ÐÔÔ³Ùè°ˆˆˆˆ¼2›Íhjj‚B¡ßÇ0ñB#bˆˆ¨_Ǽ]×s b#jå9E©}2¦õ“%·Û-&dADDDDþä9Ò¥5!ãù:&a˜!c"ÆG¬V+òóó‘ŸŸ-[¶ ""?ü0V®\ ½^? ±Ô××ã7ÞÀ–-[PWW7 ×¦Î½÷Þ{p»Ýâ´1cÆ`òäÉ‹Èg:KÆ´jMÌ‚ÀÑ0DDDžu`<0˜„¡ÇDŒŸÔÕÕáÏþ3þú׿bÆ X¶l™ß¿©AÀ¶mÛ°qãF444øõZÔ{÷Üs´Z-š››±gÏh4¤§§:,"ŸiŸŒ¡Ã”ÍÖb¾ CDDD¥}ýÏ÷'LÂP 0ãgõõõxâ‰'ðÅ_àÕW_…V«õËuš››±zõjìÙ³Ç/ý“ïhµZL˜0%%%LÄÐ5§}2@›„LëÈ0"""¢æ-ÓÙs"b"f€ìÞ½%%%øðÃåÓ¾kjj°hÑ"œ={Ö§ýz»Ö7ß|“É•J…3fˆ÷“——‡‘#G¢°°·Ür ÒÒÒPQQo¾ù‡z½ÕÕÕX¾|y›>AÀ±cÇP\\ ©TŠ„„̘1‹;wîIJeË´Œ2:räî½÷^ðÚ·ÉdÂáÇÑÐЗ˅ôôtL™2ÅkŒ­ºj'öïßÚÚZÈårLŸ>±±±^cïŽ\.‡\.ïö[ÙívìÚµ 7Þx#RRR:í³«ø·lÙ‚#F ªª ‚ `ÆŒHLLì²ÍÖ­[1|øpTTT@L›6 III]¶©««ÃW_}‹ÅµZ9sæ°0ôuÈ3Óþù`/jNDDD×6&`h0`"f={÷Þ{/vïÞÐÐPŸôÙÜÜ<`I»ÝŽO?ý¿üå/Ž«W¯â³Ï>Cnn.d2š››¡Óé°téRH¥RØív|þùç¸ë®»’’wè·´´UUUÈÍÍ…D"ÓéìQ,ÞúV«Õ˜1ct:l6vî܉áÇ#&&¦CŒžºj“'OFDDJKKñùçŸ#77•••½Š]TTT ??·Þzk^w§Ó‰}ûöaüøñ^“0ÝÅït:1yòd„……¡¨¨_~ù%–,YÒe«ÕбcÇbæÌ™¨ªªÂÞ½{±téR¯m"""°oß>Ì;‘‘‘°Z­P*•=ºGº6yŽŽi}NDDD4Xð½  1ìüùóXµj¶oßÞïo|AðøãHªªªŠððp@rr2Μ9ƒúúzqTŒçJR•••ÐëõˆˆˆÄÇÇwº’TXXL&¾úê+¤¤¤ 11±ÛXºê[*•ÂétâôéÓ00›Í0™Lb[Ï=u×®õZ‰‰‰ CMMMc7™LÈËËCHHt:233‹ÅÒí½îÝ»±±±mFïô6~‰D‚°°0@jj*:Ô£6‘‘‘€˜˜èt:ÔÔÔ !!¡Ó6‡!!!b•JÕí½ÑµÏóçëÂQ 1ùBƒ1ðé§Ÿâ½÷Þë0E§·¶mۆݻwû(ªî¹\®‰‡ÃÑiµq ¥DO–ðÖjµÈÍÍÅÕ«WQXXˆ'NˆSs¼­®ÒUß5558räf̘ððp466Âáptc_Û9NH¥R¯±·??88óçÏï´FPw+È$''ãâÅ‹¸á†Ô§ø=y*ëªMû?š¥R)d2™×6‰„Éêßøœ¬ ý]Ù¨¡¡7nôaDÝ‹EUUª««´Ôhq»Ý^—çŽEee%jjjµµµ°ÛíZ’ßÿ=l6ìv;l6FŒÛn» °ÛíP©Tp8¨¬¬Ð2 ¦¹¹¹Û¾ T*—Ë…ÊÊJÈd2¯÷%“Éàt:»l'‚xß5550›ÍˆŒŒô»çýu¥«{l5qâDÄÅÅá‹/¾“6­1÷4~oºksñâE-E§M&"##½¶‰ŽŽFee¥øÿÚétrQ; õõõxã7ðôÓO÷©ý믿>àKT«T*deeáÈ‘#p¹\ Áܹs½ßT©T˜={6<©TŠÈÈHÈå-ÿå¬V+Î;‡ÄÄD¸\.œ%%%xÿý÷¡R©ÛeÐŒŒ |òÉ'ÈÊÊòÚN&“áÔ©S0 P©TÈÎΆ\.GUUU§±›Ífñþºª“"‘H¼Þ£§iÓ¦á³Ï>ÃW_}…™3gŠ1Ï;·Gñ{ÓÝkUZZŠ3gÎ@©TŠ÷ì­Mpp0fΜ‰/¾øAAAP©T˜5kV§÷CDDDDDt½òõ8ñžô'éfÛsŸÔc_ûGëñÖç­Û²vÛòv_µµµµÇûûI}UU222úÕGdd$Ο?ßåt“ÎØívŒ7uuuýº~AAXˆv ˜L&ìÝ» .R}_¯Þxã <ú裣O‘œœè0ˆˆˆˆˆ¨ …b €f.Îv_îvÛ‚Ç6<ž{>àqû„NöµßöÆgÃý95)€jkkqðàÁ^·;pà@¿“0Åd2‰Sh~øá‡.WýL}ù§&ØÁƒ‘Ýë6CEqq1.\¸ eå©S§‰¾‰ˆˆˆˆˆˆü‰˜ûöÛo{ÝæÄ‰~ˆÄ?ƇqãÆ ¹¾ CvZÑ`Æ©IVTTÔ«•eÜn7.]ºäLjˆˆˆˆˆˆˆÈ_˜ˆ 0³Ù £ÑØãó ¬V«#""""""""a"f0™L=>×b±ø1"""""""ò'Öˆ$l6[ C """""""?c"¦bbb°}ûvŸô•ŸŸß«ó}uݘ˜ŸôCDDDDDDD=ÃDL?Üy爈ˆþöî<>ªúÞÿøk–L2Ù²" HPd‘MA@Üq« V¥j+¶—Û_¯om½·V½z[ÔQ¹u©¢ ˆ"¡lÊ¢"Š@A l“d–3¿?â'û¾áûùxŒ™9Ë÷|¾gã™Ï|‘nDcĈˆˆˆˆˆˆˆt%bDDDDDDDD:ˆ1""""""""D‰‘¢DŒˆˆˆˆˆˆˆHQ"FDDDDDDD¤ƒ(#"""""""ÒAìÀéÂívãv» !44´³Ã©¥´´ ËÆ'"§›nº‰½{÷`µZINN&++‹Ûo¿„„„v9¦Ëåbúôé¬Zµ §ÓÙ.Çi-µˆi¥¥¥<øàƒ¤§§ó«_ýŠ’’’Ωš¼¼<ÒÓÓ»l|"rz7ncÆŒ¡¢¢‚wß}—Ÿÿüç¸Ýîv9VXXddd4)Ù|ÿý÷3zôhöíÛ׿±´gÙ""""Òý©EL9uê'Ož¤´´‹ÅÒÉý ¬¬Ì|~òäÉNŒDD~Lî¿ÿ~bbb(--eîܹ:tˆõë×sÁ´ù±¬V+‹/nórEDDDDÚš1mlõêÕ¬^½º³Ã¨×7ß|Ón¿H‹ˆÔ%22’éÓ§³hÑ"<@yy9Ï<ó ÿüç?)--eøðá,X°€ž={0iÒ$&OžLÏž=Y¾|9={öäÙgŸeÆ ,^¼˜o¿ý–ˆˆÒÓÓù¯ÿú/¢¢¢˜4i¡¡¡¬Zµ  Þmÿô§?±fÍn¼ñFl67nlr\^x!N§“ììlÜn7—_~9·ÝvP•|ª¯lP"æGÇçóáñxðûý]ªÕŽˆœÞ|>€9FÌoû[¶lÙÂøñ㉈ˆàƒ>`áÂ…¼øâ‹X­U½fW¬X@¿~ýÈÌÌ$77—ÿ÷'**ŠË/¿œÊÊJòó󉊊ªu¼†¶Þ~ûmìv;gŸ}6ûöícÓ¦MœsÎ9<üðÃTTT°víZŽ=JŸ>}Ìý-ZÄðáÃزe ^¯—aÆ1þ|ìöúÿvðàÁz· ´jY³f óæÍcÀ€ÍŠëïÿ;!!!¼øâ‹,Z´ˆ;v0vìØzË P"¦•Š‹‹¹ÿþûyýõ×;;”&)**âþçèÛ·/éééJĈH»™6mšùÜjµòË_þ’¾}ûš-F>ýôSF]mŸââbóyhh¨™„4hQQQ¬[·Ž©S§2fÌnºé&233k»9ÛºM5Wll,!!! 2øaœ0‘Æ(ÓJ6›ÐÐPìv;^¯·³ÃiThh(ýû÷'::Úlf/"ÒÎ>ûl’’’HMMeòäÉôï߀˜˜Fů~õ«jûôêÕË|^s êØØX^{í5^{í5²³³ùðÃY»v-ýë_}:<òQQQäååqÎ9ç;“Ò¾}ûÈÌÌ$11‘Õ«WãõzÍ8f̘Á“O>Ùâ&÷=ô‘‘‘Ì›7ŸÏÇwß}Ç“O>Itt4úÓŸÚ²¦Æ1x‚Ùl6ÂÂÂp¹\æ¹óÍ7Ù±c=ô¹]xxx«¦ñ~á…ÈÉÉá·¿ým‹Ë¶wêÔ©M~ŠˆˆˆˆHË8ŽÑ@ à¼5þú£ÆsÐs‚^?ZOÐ2Ëj>¯O›}©W‹˜6ÎM7ÝĈ#̈Õj%<<¼³CÃét’À+¯¼@ß¾}[œ„ p8DDD0tèPæÏŸÏ}÷݇Ëåê”:ÇSSp<‡›ÍVï¶"""""""íM‰˜6`µZ6l˜9dWœhêÔ©íVvXXv»ÝÁëõ²xñbÖ­[‡ÛífìØ±ÜqÇ8N¼^/Ï?ÿ<[¶l¡  €ÄÄD®¿þz.¼ðB³<ŸÏÇ‹/¾ÈÚµk1 ÃlÍÓ^ŠwÉ’%lذgžy›ÍFyy9·Þz+7ß|3§N2\ëׯgæÌ™ÜsÏ=lݺ•^xC‡Ñ£G&L˜ÀܹsÛµ""""""Ò=(ÓFBBB~t³ùý~rssùë_ÿÊ´iÓÌ™Bž|òIŠŠŠxê©§ðz½<òÈ#<ÿüóÜsÏ=Øívz÷îÍï~÷;BCCY·n<òƒ 2ÇjùÛßþÆŽ;xðÁ cÉ’% Æáñx¨¨¨¨¶,$$›ÍÖ¤z4ïu×]Gvv6o½õW_}5K–,¡ÿþL›6 —ËU­kRII <ðwÞy''NäĉTVV6뼊ˆˆˆˆˆÈé«ë5Ý.ïÍ7ßä‚ .`êÔ©Üwß}œyæ™ÌŸ?¨JL¬\¹’ŸÿüçÄÅÅ‘˜˜ÈÍ7ßÌÆÍý/¹äÒÒÒèÙ³'sæÌ!%%…o¾ù·ÛÍÛo¿Í‚ ÈÈÈ wïÞ,X° Áx–/_ÎÅ_\íñÏþ³Iui,^»Ý΂ xùå—ùä“Oøàƒ¸÷Þ{ë-ïĉx½^Î=÷\¢¢¢HKKcàÀMŠEDDDDDDNjÓEìß¿Ÿ§žzŠÍ›7ãñxx衇ÌV]ͬY³˜?>»wïæW¿ú&L0»%9rÃ0øÅ/~a‚ëõzq¹\æþEEE|ôÑGìÚµ‹ÒÒRrrrÌV#999†Á€Ìíëêuå•Wrçw¶¨.M‰wÈ!Lš4‰ßþö·,\¸„„„zËëÛ·/ÇgîܹŒ=š3f0bĈÅ&""""""§%bº€Çœ—_~™'žx‚{ádzjÕ*3SsVŸˆˆ3ñUScöÙg¯Ãá $$„³Î:‹qãÆ±hÑ"sƤÀ@¸Ï<ó ÑÑѵö­¨¨àî»ïfüøñÜtÓM$%%qï½÷bUZ{½^ ÃÀçó™]ÚScñÄÅÅUƒ7Äjµò§?ý‰/¾ø‚Õ«WóÀ0|øp|ðÁ¶ ZDDDDDDº-uMêd>ø ¯½öÙÙÙœþù¤¥¥ñÀðØc™Ûøýþj¼¼<öïßo>6lØÐiñÏ;—;w²yóf’““ 7_×´wï^ŠŠŠ¸í¶ÛHKK#<<œýû÷“ŸŸ`NOýå—_šû´çÔßÅ pøða–/_ÎÏ~ö3þò—¿PZZZm½×뭵ϰaÃø·û7þüç?³iÓ& ÚË}÷Ý@RR+V¬ //˜˜<›6mbäÈ‘DEEñÅ_Ö`kùñP"¦ýú׿fÖ¬YôêÕ‹3fðÉ'ŸP\\ÌÝwßÍ<@lllg‡Ø$7Üp|ðË—/çŠ+®àºë®ÃápðÔSOqüøqâââ˜={6™™™ôéÓ‡Ûn»—^z‰Å‹3jÔ(ÆW­¼»ï¾›§Ÿ~šÿøÿ ::š©S§’’’Rïñ—/_ÎòåË«-6lXµVE i(Þ×_ŠŠ ®ºê*î¹çæÍ›ÇäÉ“1b\pŸ|ò óæÍcذaüüç?gýúõ<ÿüó¸\.úôéÃ<Ф¤ˆˆˆˆˆˆœþ,oÒæåYy¼Ì´¬æ#°>ð:ðÜVã¹½Æß¨‚‚‚-íÙÝ% //¡C‡µ»×ìÞ½›ÁƒóÊ+¯pÝu×0eÊ’““kµ9yòdƒÇ Œ_°oß>233ILLdýúõ .+r::uêýúõëì0DDDDD¤‡c4Pøo¿~À¨ñÜôœ ×Á‚Ö´Ì_DzšÏëÓfIµˆé$äÊ®]»Ø¹s'/½ôü1Û¶m«µmFFFƒe¶KŒ"""""""Ò¶”ˆé$çž{.·Ýv+V¬`ÿþýlݺ•Y³fqöÙg×ÚV‰‘Óƒ1Äf³ñÜsϰmÛ6fΜÉÿüÏÿÔ¹íÃ?Ü`Y .lóøDDDDDDD¤íiúêNrìØ1¦OŸÎ¥—^Êí·ßÎêÕ«ëí‚tòäÉ""]ɪU«X¿~}ë^yå•:»`¶¿ßOvv6Ï=÷/¿ü2'Nœ¨¶~Ù²e|õÕWKKù|>þüç?STTtìù Ö窳bo‰îpm´§š×]°¶~»ë¹®yŽºk=DD¤s¨EL'ùüóÏ1bƒ ⪫®"<<¼ÞmÿøÇ?šÏ½^/%%%¢ˆH›ëß¿?IIIMÚvË–-œ:uŠ‹.º¨EÇúꫯ8rä×_=‹…°°°•Ó•4çüu¦ºÞ»®{k¯³®¦½ëÓš÷ñt;×"""-¥DL'™>}:Ó§OoÒ¶ËIÙl6¢££«­×2"Ò]œwÞyv¬S§N‘””DDDD‡³½uäùkkÝ9vùÞG‘ÖS"¦舩¶ED:²eËøÉO~Â!C8tè›7o¦°°ˆˆ À˜1cؾ};Ÿ~ú)ÿú׿:t('N¬V–ßïgûöí|ýõ×”——Ó³gO&NœHtt4k×®e×®]ìÙ³‡øøx®»îºZñ;vŒ={öpüøq¢££™8q"½zõj´ü@]2228tèÄÆÆ2yòdŽ;Æ®]»())!55•)S¦àt:ªî ›7ofß¾}x½^222?~ùäöïßϵ×^‹ÕjÅãñðòË/3zôh\ï{!""Ý—1 ±Áw›KƒõŠHwTYYÉŠ+?~<™™™”––âõz9r$§Án Ÿ|ò dæÌ™Øív6lØÀ[o½Å7ÞÈäÉ“q8”——sá…Ö¹yy9_ý5×\s 111lÞ¼™•+WrË-·`³Ù,ßf³QQQÁæÍ›™={6QQQ¬_¿žeË–1lØ0fΜ ÀŠ+Ø´iS¦L ;;›ŠŠ fÏža¬Y³†7š_H7mÚÄáÇ™5kv»O>ù¤Ñóøþûï3iÒ$ÆŽk~ékîöÅÌf³cž—}ûö±fÍ’““‰‹‹kÒ{—™™ÉG}„ßï7[}î߿ߜ9°9ñæX IDAT¬[·Ž«®ºŠèèhvìØÁ?þñn¹åBCC[kC׆×ë­÷º­iûöíìÙ³‡©S§NNNŽ™”kÉ{ÑÒsß×]@àßA}ÿŽZr®m6[“¯…†>O;oM©Gc稨¨ˆãÇsÕUWÉæÍ›yóÍ7ùéOjn_ßçIVVûöíãóÏ?çì³Ïæ“O>!!!AI‘Ó˜ëí ¾Û܇ˆHwTZZŠÏç#--ÐÐPzôèArrr“öõù|ìØ±ƒI“&Ñ£Gbbb˜:u*n·›o¿ý¶Ie8N&NœHJJ N§“¬¬,\.§NjRùaaaLž<™äädÂÃÃÍ$¨Q£ˆ%66–Áƒ“““€Ûíæ«¯¾âüóÏ'<<œÈÈHFÍþýûÍ:íܹ“)S¦@ll¬™ÀiÈ!CøÉO~BBBv{㿯Ôܾ±¸êrÖYg™ç%++‹èèhòòò=v@¿~ý0 Ã<7¥¥¥’žžÞ¢x¦L™B¯^½ˆŒŒdüøñ„‡‡³wïÞÇÚеÑÔëÖ0 ¶nÝÊäÉ“IJJ"22’ÌÌÌj-9Zò^4·>íuÝþÔu®š¢¡sÝœk¡±÷¥±óÖP=šrŽ Ã`ĈôêÕ‹èèh³µ×¾}ûý<±ÙlL™2…O?ý”ƒ²{÷n&OžÜä÷@DDºµˆé__¤kxî¹çøÙÏ~Öêm:‹ÏçcÉ’%ÜrË-ŠH³ÄÇÇ“ššÊÒ¥KIOOgÈ!ôéÓ§IûaFµACCBBHIIiV‚:øûèèhBBBðxfjjj #¯úrw×]wµY\5?~œòòrÆŽk.+(( ´´´Úv}ÉMMMÅãñpäÈòóóéׯ_‹âq¹\ìÚµË< //Q£FµY¬õÅ_ßu Uïgàš©/ VScuoI}:êºkªæœëæ^ P÷ûRTTÔ¤óVŸ¦œ£òòrNœ8QmY^^éééMú<9yò$;wîdܸq¬[·ŽÔÔTBCC›Ÿˆˆt?#¦ •––š}”ÒcÄbkͯ€Ò6"""ÈÈÈhrÿù®êøñãMî* ?>^¯—ŠŠŠjš-***øúë¯ÍA5=JHHˆ9˜idd$G¥¤¤¤V7‡ÃÁ!CøøãÉËËÃår±~ýzœN§ù…¾5Ú£|«ÕÊÈ‘#Ù¸q#ß}÷†aPZZÊñãÇÍcžy晬]»–¼¼<3iÛÞ‹ ªÆñ(..ª~µw»Ý|ùå—TTT°oß>s6)hø½ °X, 0€>úˆþýû›-šO0»ÝN^^GŽ¡¢¢‚O>ù·ÛMFFF›Å¬±ë6 ,,ŒŒŒ Ö­[ÇÉ“'Íñ@:FcuoI}ºÒu×ÜsÝœk¡¡÷¥)ç­!M9G%%%|þùç=z—Ëņ ðûýddd4úyâ÷ûY³f #GŽäì³Ï&11±Cþ틈HçQ‹˜6’——gþª±téÒYûãÿØQaÕc{ï½÷ÈÊÊjqÓúüü|6mÚDYYaaaŒ?Þì3ýꫯrÆg°gÏÎ=÷\2339vì›6mÂãñÇñãǹñÆ«•é÷ûÙ¼y3ÄjµÒ»woÆOyy9o¾ù¦ÙrãĉdggsÅWÔ[vYY™yãëóù8p £G®7Æ€†öóûý|øá‡`·Û7n)))õÆÞÇþ}ûèÝ»·¹ìÈ‘#lÙ²…ÊÊJsêU¿ß_o<¹¹¹lÚ´ ·ÛMLLL³úâ×§®vïÞMII‰9ýé?þñÆGnn.¹¹¹üãÿ --©S§6û<Èém×®]æôÑ5Ç1ª¬¬ä_ÿú—y-ÇÆÆ2cÆ óóiРA}úpÙe—µYÚ£üQ£Fa³ÙX¿~=%%%„‡‡3räHs숉'²~ýzÞ}÷]BCCð:ðÜVã¹½Æß¨‚‚‚-Íé³ÝÁÉŽgŸ}–Y³fQXXh.këã5dß¾}dff’˜˜Èúõëñù|fo¼ñãÆkQ"Æívóÿ÷Ìœ9“øøx:Ä?ÿùOæÌ™ƒÍfãÙgŸe„ dffbµZq»Ý¼öÚk\|ñÅôèуdzråJn¿ýöjå>|˜mÛ¶qÙe—a±Xðz½Øíö1 •øÅ,::šÊÊJÞ|óM¦L™Brrr­á‡xÛ磌®¢G9r„µk×2gÎrss댽¦gŸ}›ÍFTT>Ÿ3Î8ƒQ£Fa±X(//ç7ÞàÒK/%::šÏ>ûŒ“'O2qâÄ:㉋‹cÙ²eÌœ9³ÎóZ×1W\q…Ù÷<Ð5iîܹæúúb˜4iï¼ó#FŒ ''‡°°0óFñwÞá¼óÎ#))©Þ÷°³œ:uªMZEˆH×·lÙ2~ò“ŸTëš$"""݇Ãá ”>À[ã¯0j<÷='èuðƒ õ-ó×±¬æóú´Ù—zµˆin·›ÒÒRÊÊÊ:;ÊÊʪu•jMB(//˜˜sV€~ýú±cÇ ÍV1ƒ 2·ÏÍÍ%..ΜI¤W¯^u@k6óMKKkÒ¯? •mµZñz½lß¾ÒÒR\.Wµ÷"8Æ`í8Vjj*±±±äçç79öˆˆ.½ôRBCCù¿ÿû?ÒÓÓÍÿrssÍfÌPÕbÆçóÕOee%±±± ž×ºÆˆiì|ÖƒÅbaòäɼöÚk$$$˜­‘jjÉ{("""""òc¤DL;¸ûî»k-댙òóóÉÊʪ¶ìرcø|¾µˆñù|µ¾ðúŸCí:†Ñ¤‘ÿ£¢¢˜3g‡bÏž=|úé§æþúÆ´i¨ìüü|²³³?~<ñññœ:uÊìºÓÐûМý¼^/V«µÞØë;ŽÃá ++‹ 6pùå—›ËRRR˜1cF“â±Z­m>£B}1ÖAÕ õÕ«¹çADDDDDäÇJƒõþÈTTT˜Ó(6WJJ yyyæ yÇŽÃ0ŒzgJII!77—üü| j†‚ÀஆaðùçŸSYY‰Ûí¦²²’þýû3qâDN:…Ûí&,, ÇCnn.PÕj£¤¤¤Ñ²OžrssL<Ùl6¼^oƒûf7€ª‰Ëå"!!¡Þ؃ëWÓ Aƒ0 ƒ½{÷UýÊ‹‹‹9xð y,ÇSo< Õ½¥ê‹`íÚµL›6 §ÓÉ×_mîf¾õ©N-bÚ@ee%.—Ë|½eËÎ=÷ÜNŒ¨¶@Ë„]»vñî»ï2lØ0Î8ãŒfµŒ cÊ”)dggãóùˆŒŒä¢‹.ª6IÍí'OžÌÚµk±Z­$$$˜ã†TTT°sçNRSSñù|lݺ•²²2 à ++Ëœ²q„ ¬Y³§ÓIll¬9ÎICe§§§søða–-[FXX)))õÆ0tèPÞ~ûm¦L™Rï~6›mÛ¶Q\\LXXÓ¦M3gê¨+v—ËeÖ¯æô“‹…1cÆðᇒžžNHHÓ§OgãÆlß¾†Zo=jÖ=))©Ú”©P5~KpGŒÁ™gžYï9¨/†¢¢"ÂÃÃIKK#%%…·Þz‹ž={ÇðáÃÙ°a»wï&++‹mÛ¶ÕùŠˆ´§k¯½¶³Ci ÖÛJÅÅÅÜwß}lݺ•£G];°`Á~ñ‹_˜‰ŽPVVÆÊ•+¹úê«»UÙÒýh°^‘îáÇ8X¯º&µ’ÏçãàÁƒf¦«‹ŽŽ6[tÄøeeex½^vïÞMZZZ·([DDDDDD¤=¨kR+EFFrÓM71zôh-ZÀUW]EXXX'GV·[o½•1cÆ0pà@œNg»ïàÁƒæ¸"ÉÉÉŒ3¦[”-""""""ÒÔ5© säÈ&L˜Ðfe¶—Ç{Œk¯½¶ÍgÝéJÔ5IDDDD¤{ø1vMR‹˜6M=Ì×·Ür  hÑÑí¡´´”ßÿþ÷@Õì8 \+"""""""íG‰˜v0jÔ(¦NJHHHg‡À‰'ÌnSqqq26ŒˆˆˆˆˆˆˆÔ¦DLILLdÑ¢Eøý~&NœHLLLg‡d çÙgŸଳÎê2-uDDDDDDD~l”ˆi#V«•K.¹»½ëÖñãÇwv"ò#×–cs‰ˆˆˆ´„zHWÐõ2ÝXWéŠ$"ÒUÔL¾(#"""Åb±T»QRF:‹1""Ò.‚otü~¿ù¨¹NDDD¤=.‹Å|@Õýˆ’1Ò”ˆ‘6U_Æçóáñx0 Ã0(ADDD¤íX­V¬V+!!!Øl¶j ™À}‹2Ò‘”ˆ‘6Üâ%ððz½¸Ýn¬V+N§“¬V«nxDDD¤Ýùý~ ÃÀãñP^^Nee%‡»Ý^+!£{é(JĈˆH›¨™„1 ƒÊÊJbbbºä@æ"""rz³X,Øl6l6aaax½^JJJðz½„††bµZÍ플‘ŽbíìDD¤û N†ÏçÃårJ\\œ’0"""Ò%Øívâââ Ååráóù0 CãØI‡Ò±ˆˆ´J]I˜ŠŠ "## ëäèDDDDj ÇjµRZZjÞ¯ºN«eŒ´7µˆ‘6HĸÝnœN§’0"""Ò¥………át:q»ÝÕZň´7%bDD¤Å7,›¯× @DDDg†%"""Ò${¯×kþ¨ê¢$íK‰i‘š7(>Ÿ·ÛMTTT'E$"""Ò|QQQ¸Ýn|>_µåJÆH{Q"FDDZ%ÐÆçóaµZ éìDDDDš,$$«ÕŠÏç«Ö*F¤½(#""­f‡ðððÎEDDD¤ÙÂÃÃñx»ÁýÊÊÊxûí·yï½÷ˆàŽ;î`áÂ…,\¸üü|<ãÆ#::šèèèv«ƒˆˆˆˆHC”ˆiEEEÜsÏ=¬\¹²ÍÊüì³Ïø÷ÿwV¯^Ý&å%&&’Mbbb“÷Ù»w/GeÑ¢EØl6âââ0`@½ûÜzë­­ŽUD~<®»î:,XÐìý:„aÌ;לBÛëõRVV@zz:YYY\sÍ5Œ?žK/½”sÎ9§Mci %bÚIqqqg‡Ð –´ªñù|¸ÝnòòòèÕ«W“ö™?>³fÍbúôéf/¾ø"k×®Å0ŒZ_„¼^/‹/fݺu¸ÝnÆŽËwÜÓé4Ë»æškX½z5_}õ<ð#GŽäšk®á7¿ù #FŒª’F¿üå/ëM†5vé^¢¢¢Xºt)111µÖ[­Vž~úi¶oßλï¾Ë¯ýk²²²xì±Ç::Tù‘S"¦Íœ9“‹.º¨Õ夦¦2þ|.¾øâV•³ÿ~žxâ‰í;hÐ ÒÓÓ¹÷Þ{¹üòË™2eJ³ZÔüíocÇŽ<øàƒ„……±dÉ’jëŸ|òIŠŠŠxê©§ðz½<òÈ#<ÿüóÜsÏ=æ6øÃøÅ/~Á¼yóHMMmQ]šré>zöìIDDÙÙÙ\rÉ%õn7räHFŽÉ7ÞÈìÙ³9~ü8III©ˆˆÈ›Çãá™gžaåÊ•T[7xð`žxâ ³›±ÈéJ‰˜vArrr«Ë±ÛíÄÅÅQYYÙªr [¼¯Ãáàÿ÷y÷ÝwyóÍ7Y¼x1&LàÚk¯%##£ÑýÝn7o¿ý6O<ñ„¹ý‚ øè£€ªA‰W®\É«¯¾J\\7ß|3¿ûÝïª%H¦OŸÎ¬Y³Z\¦GDº¶ØØXŽ=ŠßïÇn·sÓM7ñ—¿ü…ääd²²²(((àĉ <˜ââbÖ­[ÇèÑ£‰ŽŽfûöí8Nbcc;»"""?*‹-ªõclÀ×_ÍwÞÉ3Ï<£dŒœÖ”ˆ‘f göìÙ\yå•lÙ²…7Þxƒ»îº‹'Ÿ|²ÑdLNN†aTSÆjýaâ®#GŽ`¿øÅ/ªñ<ý,TeÊ[£©Ç‘®íºë®ã¿þë¿8pà>ú(·Þz+¡¡¡<úè£äææÏOúSLII k×®åÉ'Ÿ¤¬¬Œ~ýúñðÃãp8:»"""?*¡/^ÌYge./,,äÎ;ïdÿþýL:µÚ>‰‰‰Ìœ9“Ûo¿W¤=(#-b·Û7nçwsçÎeýúõ&b¼^/†aàóù°Ûk_z<óÌ3-šÑÄï÷7i»ÖGDÚÇC=Ôàúš¿ž=šåË—›¯- 7Üp7ÜpC­}{÷îÝân™"""ÒvòóóæMꑟŸÏ‹/¾ˆÅbáç?ÿy{…&Òa”ˆ‘V±ÙlôèÑ£I¿*øýòË/ÍAuƒ“'ÉÉÉ„‡‡³yóf¦M›Ö¬8ÂÂÂøî»ïªMq[_b¦5Ç‘ÖÛ¶m[“·ýâ‹/˜;w.ï½÷ž1rZ°6¾‰´ŸÏÇŠ+X±bE³Æ~)))aÅŠ¬ZµªÎõ[·neÅŠ·X,\}õÕ\}õÕu–_³¼€¸¸¸ZãK—[3®ÆŽ#"""""+++ ¨êÆô׿þµ“£i;JÄ´³¼¼<¾üòË:×wÙ½{7‘‘‘õ–3~üx¾ýö[þõ¯qüøq è³ì’’Ž;Vkýwß}×ì:ˆˆˆˆˆˆˆHÛP"¦egg“Ýèv?þxƒë¯¸â ^}õUV¯^m.óz½üþ÷¿¯wŸU«VÕ;ŽŒˆˆˆˆˆˆˆt<%bZ¡´´´ÎååååDEEß&ÇñûýØl6¢¢¢ˆ‹‹kußH‹ÅBll,6›­Mâé®þüç?sÏ=÷´[ù>Ÿçž{Ž;ï¼³Ùû¶Ul­‰ADD¤£º#Õ·¬9³-‰tUJÄ´P^^Æ ÃçóuÈñ|>%%%œ_|ñ…9’È1­P×Í]IHHçw111ŠˆH—°~ýz†Ú­ÑN§“)S¦ÞÙ¡ˆˆˆ4ÛÌ™3yñÅ™;wnµåÇç¯ýkµ/ÁƒõŠœN”ˆi÷ß?IIIu®Û¸q#Ë–-càÀÜu×]M.sùòå¬Y³†1cÆ0gÎRSS™?>_|1.—‹… ððÃ׺_¹r%ï¿ÿ~Ë+$"ršÊÍÍíöÓÔ[,222:; ‘¹ýöÛX±bùùùærMM-?&JÄ´„„’““ë\ Tuªo›º’+N§“äädìv;qqqTVVRVVfn—””T«izC³/‰ˆtUß}÷ëׯ§²²’=zpá…Öú|;zô(ÙÙÙ¸ÝnzôèAnn.·Ýv[“Êß¶m999,[¶ŒŒŒ fÍš…a¬Y³†œœ Ã`Ê”)ôíÛ—ËÅ«¯¾Ê¼yóÈÏÏçÃ?dΜ9<ùä“ 0€ÜÜÜjûäääMee%qqq¸ÝîFë¸xñbÈ×_͸qã8óÌ31 ƒ•+W’ŸŸÝngÒ¤IôêÕ ¨>~L]û6ƒˆˆHg á®»îjÖÔ"§%bDD¤Ó¹\.V¯^Í5×\CLL Ÿ~ú)6l`Ú´iæ6•••¼÷Þ{\yå•$$$pèÐ!öïßßäcdeeqàÀÎ?ÿ|RRRÌå#FŒà /dÏž=|ôÑGÜrË-–åõz9çœsˆ‹‹«¶_ Æ+®¸ÂŒñÛo¿m´ŽÅÅÅÄÆÆrë­·VH}Ô¨Q$&&rèÐ!Þ{ï=n¾ùfGµXjîÛP """݉º$ÉéJ‰˜vvÖYgqï½÷Û¬ýÆOÿþýëlEƽ÷Þk>éîrrr(++ãã?Àív× =''‡=z@jj*¡¡¡­:®Õj5ËËÌÌdõêÕMÞ/..®Ö~ÇŽ#>>¾Î«ã!CªÃb±˜˜@¿~ýˆ‹‹#//>}úÔŠ'x߆b‘ΧDL;KJJªwü˜†ôíÛ×læ^“Ífã¼óÎkmhò½çž{ŽŸýìg­Þ¦=ïóùX²dI“~©oëc‹t„ÐÐPzõêÅe—]Vï6~¿¿Vk¶d±XªõO7 £Ùû†QoŒ ÕÑjµÖYn0¯×[­µL}û6ƒˆˆˆˆt¾Úw~"Òæ8Ào¼Á’%Kxýõ×Ù¸qc­mÊËËY²d .—«"é\)))qàÀ *éâñxðù|lÛ¶ÊÊJzöìINNyyy?~œÊÊJ€jÛ«¹ÜétR\\Üh-‹½ IDAT——GYYY“û Å """"O-bDÚYAAŸ~ú)Ó¦M3\.))©µ]XXçŸ>N§³¢é\!!!\z饬[·Ž-[¶àp86l½zõbÇŽôíÛ—¤¤$¦M›ÆêÕ«±Z­$&&@EEEµíj.9r$ëÖ­ãË/¿äòË/¯7‹ÅÂ\ÀŠ+p:ôèÑ£ÖÀÁuq:ÕbLNN&**ªÁ:0 Î²l6[¶l¡¨¨ˆ°°0.¹äìöÆÿ·ÝP """"Òù”ˆigùùù$$$˜ãI„††Ö9^ƒÅb!--­ƒ£é:’’’¸æškj-î>—žžNzz:¥¥¥æ´—uv³«¹¼W¯^\wÝuæëÀÌCwß}·ù|àÀ 8°ÎXÚ/8Æšê«cÍòj–ÙÐöuíÛP """"Ò¹”ˆi‡¦¼¼¼]áv»9vìX“f¾(,,l·8òóóÙ´ieee„……1~üxs0ÉW_}•3Î8ƒ={öpî¹ç’™™É±cÇØ´i‡¸¸8Ž?Î7ÞX­L¿ßÏæÍ›9xð V«•Þ½{3~üxÊËËyóÍ7¹á†8qâÙÙÙ\qÅõ–]VVƺuë8yò$>Ÿ2zôèzc hh?¿ßχ~HAAv»qãÆ‘’’RoìÁ’““Ù¼y3_|ñ™™™ ¶x ³%77—M›6áv»‰‰‰©Ö…áÈ‘#lٲŜšvâĉ„‡‡×ª_Ÿ>}<‡Áê+S¤+)--%,, »Ýή]»ÈÈÈèìDDDDDšE‰˜6ð裶û1¦M›ÆâÅ‹›<£G{p»Ý¬ZµŠ™3gÏ¡C‡X½z5sæÌÁf³QRRBtt4×_=V«·ÛÍ|ÀÅ_L=8|ø0¬Uî‘#GÈËËcΜ9X,¼^o“b©¯l§ÓÉøñã‰ŽŽ¦²²’7ß|“ôôt’““kŬ¡ý jŠÛ=zpäÈ>øàæÌ™Cnnn£±ÇÇÇsÉ%—ðÙgŸ±uëVÒÒÒ̲«ßÌ™3Íú}÷Ýw@ÕX2ü1—^z)ÑÑÑ|öÙglÙ²…É“'ת_S„ •)Ò•ìß¿Ÿ/¿ü¨ e„ ‘ˆˆˆˆHó(ÓB‹…ðððZÓ«¶çñG³Æq:µfÝh¼¼\›³Ÿ×ëÅjµÖ{}Çq:Œ5ŠÃ‡SXXXo"¦¡ú9RRR˜1cF­uu·)Sð6T¦Hc×ÅbÁçó5i@Y‘®ÄçóU»§iOº[n…I“&uÈqNœ8Íf£_¿~ 6¬Î^;BJJ ÙÙÙ?~œ¤¤$Ž;†aæ ´um¿nÝ:òóóILL¤  ·Û T%vîÜÉ™gživééß¿?}ûö套^Âív†Çã!77—””rssÍÙ†*ûäÉ“„††’˜˜ˆÛí&77—!C†Ô[/›Í†×ëmp?¿ßoÖ;??—ËEBBn·»ÎØCBBÌú¹\.¼^/ @ÕØ6eeefË¢Àñƒ¿¼6T¿¤¤$Š‹‹9xð iiiøý~¼^o º†Îað±›S¦H], 6› ·Û­DŒˆˆˆt;n·›Í¦$ŒtÝ-wááá|ûí·„††vꜰ°0¦L™Bvv6>ŸÈÈH.ºè¢Zc­o?yòdÖ®]‹Õj%!!ÁŒ¿¢¢‚;w’ššŠÏçcëÖ­”••aYYYf²i„ ¬Y³§ÓIll¬Ù‚¤¡²ÓÓÓ9|ø0Ë–-#,,Œ”””zc:t(o¿ý6S¦L©w?›ÍƶmÛ(..&,,ŒiÓ¦a·ÛÉËË«3v—ËeÖÏãñ°cÇNž<‰aDEE1eʳ.ã_tÑEõž»¤¤$"##ª)p§OŸÎÆÙ¾};!!! :”þýûת›Åb©÷ÖCý~?†a`‡²²2’’’ÔšJDDDº ÇÃñãljˆˆ $$«ÕŠÕjUR¦ƒ8ŽÑ@ à¼5þú£ÆsÐs‚^?ZOÐ2Ëj>¯O›%êo& ]JïÞ½»e¦¬¬ÌœIh÷îݤ¥¥u‹²E¤é, ‹«ÕŠÃá °°°³Ci²ÂÂB‡™|QâEÚ›º&I»:xð _ý5ÉÉÉŒ3¦[”-" «9CRà¦Ån·SQQAII QQQ¥ˆˆˆHÃJJJ̉2÷3ÁÉ%e¤=¨k’ˆœvÔ5©cwO tQòz½x<ÊËˉ×x1"""Òe¹\. q:„„„`·ÛkµŠQ"¦ýý»&©EŒˆˆ´JðŠÕjÅn·ãt:),,ÄëõÝÉŠˆˆˆTW\\Lqq1N§³VFÉioJĈˆH‹º'¿¶Z­øý~l6N§“ÒÒR\.ñññ8ŽNŒVDDD¤jšêÂÂB ÃÀétb³Ùj Π„Œ´%bDD¤Åê+Æf³™¯CCCñz½äææâp8ˆŽŽÆápTÛFDDD¤½øý~|>n·›ââbÜn7¡¡¡„††b³Ùêm £ûiOJĈˆH›´ˆ1 ›Í`þÂd·Ûñz½æ/P†a4RšˆˆˆHÛÜ„„„Õj5[Âß³(ù"E‰i•à.J5“1_– Ã02Á}5hºˆˆˆ´·à–.„Lðj'a”‘ö¦DŒˆˆ´Z]ɘ€@b&0³’ZȈˆHG &8( #N‰i5“1~¿¿ZB0óUké(5Ç ¾?QF:ƒ1""Òfj&c€j Ã0t“#"""¢¾L]¯EÚ“1""Ò¦‚05_×l!#"""Ò‘”€‘®@‰iÁ­c¯EDDDº Ý›HgQ"FDDÚMð ŽÆ…‘Φä‹tJĈˆH‡Ðˆˆˆˆ¨³¾ˆˆˆˆˆˆˆHQ"FDDDDDDD¤ƒ¨kRá÷û1 Ã0ðûýÕf±X,X­V¬V«šö‹ˆˆˆˆˆˆtcJÄt"Ã0ðxS•„©£k€ß%(S•”1Àoiì%¢üNòÌæD;éÑ#±j)"""""""Q"¦ùý~Žç&¾øAbØ6Xª«°VkóC"¦Ž&1~ÿý¿,~ë‹ß Éÿ§ Žç¹Ÿ¤äTͰ$""""""ÒÅhP‘vR•„ùŽÄ¢_Ã&°ØÁjÃbµc±~Ÿ±Ú[÷°Ø°|_&VXìIJĢ_s<÷;s l锈i'ùÇs‰/þO"-»ª’$V–ï“1?$Sj$cl!` ùþù÷«½j™-¤F"¦z9?”m#’ô(ºŸ‚üÜÎ> """""""D‰˜vpêÔ)"‹þL ŸuE²%On c±Ù±XCª¶FZÅ•i¶´±Øˆ¶l#üÔSµiÝ yüñǹᆘ1c×_=üã)))iq™óæÍcÙ²eæëùóçóþûï·E¸"""""""]ŠÆˆic•••x ×ÐËx¬Öê ’j­ß'M¬X¾¸·ö€½U,5Ƈñ?H/~ø-`øªRjFU1~ÃO¢ñ‡ FPv1¡¡¡­®›ÇãaáÂ… 0€?üáÄÄÄPPPÀÎ;‰ŒŒlq¹cÆŒáŒ3Îhu|"""""""]1mÈï÷sòD½*ÿ6KUK˜@Â%„±9 r"DŽ{"øÊñ»¿ÂRö1ø‹¬× “Á1lNðæCéF(ù ~HÆXüø-6°úI®|œœ‚$÷Joõà½{÷îåèÑ£,Z´›Í@\\ hU¹·Þzk«öé.”ˆiC¥¥¥D”,!ÌZð}òÅZ½õKX:ôz5öœq·Àɧ¡ücª1ÁÓWûÁ9Ü` ¯¾kÔÅ¿Žý*¾‹¿ê˜øÁ°f+$¼t)ee ZÕjÀçóáv»ÉËË£W¯^un3þ|ÆŽËÖ­[9pà©©©üò—¿ä«¯¾båÊ•äåå1|øpî»ï>bbbÌ}fÍšÅôéÓë,Óëõ²xñbÖ­[‡ÛífìØ±ÜqÇ8ÎVÕGDDDDDD¤£iŒ˜6â÷û)+É#Þ÷Ž™x1»Ymàè }ž«# óýþ–püñ¿‚ˆ kÖ1 ü}µ“0¡¾/»—™ø±u}êá{‡’¢ÜVÏ¢4hÐ ÒÓÓ¹÷Þ{Y¶lùùùµ¶)..æ…ÿßÞGGuvÿÞ™Ñh—@¬‚¶Á,Ƭ qí8õ‚W’Ø~¦Mº¤¯O—œ¶Î›öd?9o㞸vÈk×µi^ÇÆ)® .1 à@°ÌËŒ%6ö™¹÷¾Œf˜Í*Fü>çÜÞ;wyîsïÕ™ÏóÜû7¾þõ¯óïÿþïTVVòo|ƒ3gÎðï|‡ý×åìÙ³<ÿüóIŸ÷g?ûgÏžå™gžáÙgŸåìÙ³üâ¿èÕµˆˆˆˆˆˆˆô1iÒÞÞNnË’åìˆ÷¥kþ-p–&,Ç.úº¿ËR`0^WVñ×WÀY Ãÿ&ìœ:d9ÛÉk{“ööö^]£Ûíæé§ŸæÞ{ïeݺu¬^½šï}ï{=z4¸OQQO>ù$“'O¦¤¤„ûï¿€Õ«W3jÔ(*++ùüç?Ïþýû“:g[[6làOÿôO)))aذa<öØcìØ±£W×"""""""ÒÔ5)MZ[[)õ¾ Y]ƒíÆÕPÄ] ùó£·³î}Ž:ÆÄêñÌ»u8²!o)Fû›Ø¹·a9þ}kwsäðq&MžÀ-ófw/,¸GCçÉ®s[ÁºäulärÛ—ÉˋѪ&Iyyy<øàƒÜwß}ìܹ“×^{?û³?ãg?û&ø[û„ŽESUUøƒª’’’àºdC¡Ó§OcYßüæ7ƒåú|>ÚÚÚzu"""""""ýAAL˜¦‰Õ~‚Bç)ÀÞÆp@n”Ðø??‰_½úëàçû¸›¯þñW0³fãêÜè/;k`Ís/òú¯Ö÷}àÁ{xâk_îV¦7Ãs*üü8(Îú„KŸ`š%Áv{Ãår±páBn½õVžxâ ¶mÛ bBE 8•AƒóóóxöÙg)**êy…EDDDDDDuMJǃ³mw°õ‰l×?ù²º¿U¨££“u¯¿¶nÝëoÒÑщe vM²JG{o¼þ_aû¾þÚz:::»•kºªÃÎmpµ…Ž£u'']— €ÓédèС¸Ýî´–0|øpòòò¨««ë“òE$ý¾ò•¯0oÞ¼¨So»H‚¿Ëâ’%KX²dIZʹ–Ô"& ¼^/®Î '´[ÒÕîI¦ÕýFû|>,Ë [gY>ŸËĦmâõùº ´kY¦é²ÃÖ›¦Ëpt¯®Îñz½=~ÛÐؼy3óæÍcÔ¨Q˜¦ÉæÍ›9tèù—Ù£2£)..æ³Ïüƒ »\.|ðA~ñ‹_PVVÆŒ3¸xñ"—.]¢ºº:mç‘ô[¸pa·6-òrrr‚-ð²³³ìÙžzê)6mÚÄË/¿Ì¤IÝC}É< bÒÀçó‘gœêzãtxk Ú÷cÛ„uÉ)(Ègþ‚[ر}gpÝü·PPO[óqÿ“³³‘¢iÌ›?‡º»¯î»pn°ÛN€mYÐQ ^Âë9œ¢ÍçëñuðÌ3ÏÐØØHNNÕÕÕüä'?aôèÑ=.7Ò}÷ÝÇOúSNœ8Á?þã?òÈ#àv»ƒç-))áÁT#2À=õÔSÁ×Ô§“Ãáà…^H{¹"""""×Bòƒu¤¯<#Árè:GȺÈ)°=ð9°ìŒXvEÌ ÏŸ?¿³·¯rÕØØHÅù»Èvµ‚Ã…áp3ëj÷"g)-e¿¤¨hHØq¼þ«õ999lÙ²Ó4¹ÿþûYºt)ÿüÏÿÌþýû>|8ý×ÍŒ3ÿ åÏ>û,ï½÷---̘1ƒ'Ÿ|’ŠŠŠ¤Îh àt:õÆ8tÜn÷< 0_Äܬˆe;d™Ï¡!Û YgGY¹KÚBµˆIÛ¶Értt} t"øÙa7c]~•¶¬/‘—{õ­EÙÙÙ<ò¥ûƒŸ-ÓäâùC”Õ»&å»ëi¸p„¡eÕaûFjkoþü*-„eYÆÕÜ*ËèèÖJD¤¯üà? +++øù¦›nbÕªUÁÏÀ¤²²’½{÷òüóÏ3uêT,XÀÊ•+©¯¯§®®.ÄìØ±ƒ’’æÌ™õ|o½õà3[ ÅÜO~òÖ­[Çĉ™7oÛ¶mãÉ'Ÿä¹çž &‰ê¹ÏèÑ£ùýïÏsÏ=ÇsÏ=Ç7ÞHYYGåþáxã7ÈÊÊâïÿþïÙ¹s'‹-"??ŸÿþïÿæoÿöoyñÅq8 Ï»lÙ²`³dÉ&OžœŽÇ"""""ýLALš˜q·1_¥¡aíE‹(Rüá--Í\¾ô C^Á0,0üÆ0| Íû¿œ=ûC†Œ!¿  ì8˲¸té"¾æ÷ίâÖÁáèy·$‘TmÙ²%ì³Óé b^}õU²²²xñÅyî¹çØ»w/ ,`ùòå<ýôÓìܹ“o|ã9r„††V­ZÕíÿ† Xøõ¯ÍøñãyñÅq¹\¬_¿žïÿû¬]»6,ˆ‰W—hû¬Y³†^xÅ‹óãÿ€‡zˆ'NpêÔ)LÓ¤¶¶–¹sçò£ý€ŽŽ6oÞÌ™3gºsÆ:o Å̦M›øêW¿ª1bDDDD 1ib8œ\m-e»m2Âù,M—ë9~n FÖÈ®6^O ŹûU´‡Ã ¶ ¬®`Ƕp9.0²ð4^šË§g§‘å*ÃÀ²,lï§”eo¡Ìñ˜fŒ³Öö~L‘dÅëš0dÈ`‹™iÓ¦þneeeeÌœ9“½{÷rá¶oßÀÊ•+c–—®=z˲¸å–[p¹üÿ¹[±bßÿþ÷9qâDÒu‰·OYYYpû´iÓ8qâ—/_æüùóìÞ½›yóæ…•såÊ•”Î+""""ƒ‹‚˜4±.Œ`xÙÕÌ®’µƒ!Ù»ðØCñš%8³LrŠ®`8`8¯†0Fà l §ÑBEá&Fä¿MGg¦×IVÖ%Ü9ºÆ‚±»Ÿ/¢.†ój‘$”„Z±b{öìa×®]ìØ±ƒ#Fpà 7Ä,#òpW[›æÕ‹†ANNNJu‰ííO¡ëÔœ9sø«¿ú«°ýFŽÙã󊈈ˆHæ‹Ý¾[Rbdåº'ÿ ÿÔµÎíh"?û¹®F Û¶é],Ûòa[Þ®Éçfl lÃö‘ëj$?ûnGSÈ9’8·«g¯­éË–-Ãår±aÃêëëY±bEØÛç7nà[ÆãñP[[‹mÛ}ÞÍgܸq8]]gq.ÿ‹tæÿ ¥¥¥i»v‘¨©©‰ªªªþ®†ˆˆˆˆˆ$àv»çÍøß~㋘ۀ±l‡,C·.!ÁASÛ Y9 k´åXÒ"¨EL¸\.š;Ê(Ë.Åö4Ñý;`uu+²È-/`Ôüs\:”KsýÁ^Ÿ{ÔÂNr‡cwµ¸ ÿ^^ŒÜZ=eäë‘‹ˆˆˆˆˆˆôõSIƒ¬¬,Z=#0òG» ƒÛ+dÙÅãl GïÃ4‡Ã¦p þ§å\¡u0òGÒâ‘R—é5kÖôwDDDDDDd€Q“n·›Nk<ägöÕP¤ë-HW?›`™ÏcÄìŽ^Ÿ·â–ŠÆåwÃŒqN Ù¹ÃðØã{5Èc{{;/½ômmm½®{´2ÛÚÚx饗‚¯œÍ4}qDDDDDDdpQ“N§“Â!ã8¹ Æ^m‘Ú¦+„Á6É)ÉaâΞ·Š1œ6ãïè$»$;¬ì¨ç.˹¦" ‹«‚ƒ÷DNN‹/&7×ÿ캺:šššz\^d™¹¹¹,^¼˜œœœ^•Ù_"ˆˆˆˆH$1iRRR©óUyÃ!«°«‹Ù-„ ´V)žTÀ¤»b·œp9 \ÎØgÒÝíOÊ÷Ÿ'¬ìÐsZþºä–súüJJJzu†a0vìØàÛ>ñx³fÍ¢¸¸˜ðÛдvÍsIDATßþ–Gy„ÂÂB>úè#jkk¹ûî»c–ïñxظq#wÞy'¥¥¥œ°|Íæ¦¯y)\q³³³©kº25u`zÚq-mdÚ£ ÇdG)+䶉•; ;»”–ö\Zì…^Ó{aÅÅÅLœ8·Û¬Ã„ ¸råJÜã(..¦´´€ªª*òóó¹xñbpŸ)S¦àp$þ 2„ÖÖV¶oßΩS§¢Ž“oŸÞ^ËgŸ}F[[Û·ogÆ |òÉ'½[GDDDDDä:6 ²€T©EL†Áç¦ÞÄž÷?bÉçv`çT`[>žF°À6lp81, §¿eŒa‘_éÀî£mò9¸l`ÎÁÙÒÕ5©ÐÄžÔ ÅùÕ†ÓÑÀØÁ–0vØ›’L,w9äŒÀ¶áý#3¸qÎMý:nIdX’Lxbšf·7Ÿòòr®\¹Â‰'ÿx4^¯·We‹ˆˆˆˆˆHfR‹˜>PUUÅÞ wpò\3cJOa¹J±l7NÏi˜bØØ† ‡¿Å…á 0 ¢´\±»þmwÍ-ì`‹˜®×UãÀÌY…À©óÃiqÞÁ¤1cúì:g̘ÁöíÛ9pà555|øá‡TVV’Ýë²srrX¾|9[·nÅ4M ¸ýöÛc¶@1 ƒ%K–°iÓ&rss2dHp0ÜK—.ñþûïÓÚÚŠeYÌž=›ììlÚÚÚ‚u6M3ê>½1}út~ýë_sûí·óðìØ±ƒ={ö••ÅôéÓ?~|¯Ê‘Ì“îþ*É”g$X]çˆXוX„íëˆ2LNüaSè¼ðüùó;m»o»”Y–EÝŽ­|®ô F}ŠmúÀôâðžÇÁ•«ŒÑUe#Ä„^n€Ý•ÅÂ+Ø5ɶm,£ËUÎ, §‹ÏšGqàâÝÜ:IR]g Ó4yùå—yì±Çú»*’áššš¨ªªêïjˆˆˆˆˆHn·{Ð ˜€/bn…Lv”9]óÀ:BÖ‡Ž]aGÌã-Ç’¶¡?ZÄØ¤?póæ/¦vtxÖSUrÓQ‚ÏÌÃe]Æa´û l¢1á­b,l L;Ó(ÆpdCW[šãçª8Öòæ/XœQ! ÀÉ“'©¬¬ìïjˆˆˆˆˆˆÈõãšü›Y¿Ô3ŒÓédÁÂ%œö>Ì®ãs1­Àívⵊèð”ÒÙ‘‡·ÓÀöú[ÌøÇ~ñ†ŒÓµlz±|&ÞNƒÎŽ<:<¥ø¬"ü|À² ~jg|°`á’¨oÈl󾯱c,\¸°¿«""½´qãF¶mÛuÛüÇð»ßýîšÔöm¶nÝÊš5kxùå—¹páBŸŸ3Õë{å•W¨¯¯ïñv gš&ÿò/ÿÂåË—¯Éù2éùDÖµ¯ÿ¯åߺˆˆH¦Ñ1}Ìáp0wî\NžΦú n*߯ˆüS][ L3 Ÿé Óô鼆å_.lÛ¸‚] §ÃyµÕLCópö5.¦jÒ¦Oœx­/1- Ãà¶ÛnëïjˆH?~<åååIí»sçNššš¸ýöÛ{t®úúzNŸ>ÍêÕ«1 ƒœœœ•“ŠT®OÂõöy÷uù}]¿k-ßÕh÷F """± ¤ &™.KÛ­©ªªŠ²²øàƒjŽ^ÜIõ] Íþ4l°MÛ´±Mw$Ãec8 ÿQæù¶r6ÍÃÊŸË-‹fPPPpÍ®GD¤'n½õÖkv®¦¦&ÊËËÉÏÏ¿fç¼–×'Ò}ý]Õß‚ˆˆ\c×tŒ—ÞHAL_‰6(O¿ÈÏÏgþü46NâÀáyx/Ô32{åî#¹Î%UÆåÎR:'ðiç ²‡LgÒÌI 6¬k."’¯¼ò 7ÜpÓ¦MücCÕÕÕqñâEòóó™4ióçÏgÏž=ìÞ½€#GŽ0}útjjjÂʲm›={öðñÇÓÞÞNEE555±yóföïßÀÁƒ)--å‘G »qãF\.WXK¼ßýîw444pûí·S[[ËñãÇiii¡  €¹sç2eÊ”°ë˜5kü1gÏžåŽ;î`̘1a×gšfÂrŽ?Ξ={hkkcøðá,]º”!C†D½¦iRWWÇáÇñù|L˜0E‹‘••÷~¦Rή]»8zô(=ô‡¯×ËË/¿Ì¼yó˜:u*¯¼ò S§NåðáÜ;wŽ’’jjj>|xÂçëÞ;w.êóNt½–e±sçN<ˆmÛŒ;6ê}‹õ}JT×DÇœ={–ƒÒØØHQQ555Œ92©çú<’ùÎŻGŠü[Ø·oû÷ï§­­#FPSSC~~~ܺź7‘å'ó½˜0aŸ|ò çÎëv/EDäº0`~»÷µL bⵌð­¼¼œòòr®\¹³g—ðQc#žKgÈã49ög¸íK8¬v,G.£„£‚6Fá.Eye9³Gޤ°°°Ÿ¯DD¤ç:;;yë­·X´hÕÕÕ´´´àóù»eΚ5 ¯×·+È®]»8qâwÞy'.—‹íÛ·³nÝ:¾üå/³lÙ2Ün7ííí¬X±¢Û±ÕÕÕ¼óÎ;ضí‹pôèQn¾ùfœN'ÅÅÅÁr>̦M›>|8%%%Á2~ó›ß°téR,X58I¦œË—/ÓØØÈªU«((( ®®Ž×_G}—«û¢·nÝJGG>ø –e±iÓ&vìØAMMMÜû™J9³gÏæðáÃìÛ·›o¾™]»vQVVÆÔ©SƒÇoÙ²…U«VQTTÄÞ½{yã7xüñÇÉÎÎŽû\ã—EÞ»1cÆD}Þñê P[[Ë©S§¸ë®»p¹\ìÚµ+êõÆú>%S×xÇ···óñÇóÀP\\L]]6làñÇÇét&¬*ß•D÷=™íñìÙ³‡ƒ²råJòòòøôÓOÉÍÍMX·dþV“¹×ÔÕÕż—""r]‹÷Àÿþf ÖÛӛ𣍍ˆÉ“'³hÑ".»‡Iscèô¿À]ý-˜øL| wõ·:ý/˜4çQ.»‡E‹1yòd…0"’ñZZZ0M“±cÇ’ÍСCcþë}$Ó4Ù»w/K—.eèС³råJ<ÇOx|UU–eñé§ŸërñâEÆÀ7Þ,wöìÙÑÐÐVÆ´iÓ¸á†(++‹š$SŽeYÌœ9“‘#GRTTl¡søðáney<êëëY¼x1yyy0oÞ<Ž=¼†dîg¢rœN'Ë—/g÷îÝœ8q‚°lÙ²°2–/_ÎÈ‘#)((`Ñ¢EäååqèС¤ŸK2÷.Q=MÓäÃ?dùò唕•1dÈ–/_µ¬hzûÈÍÍ¥¦¦†#F››ËìÙ³ikk£©©)aý#%ó‹uߓ݋eY¼ÿþû,[¶Œòòr ¨®®¶ÜI¦nñ$s¯srrX¶lYÔ{)""×µA™ dj‹˜X2v ™ììì¤þÅJDd°(--¥²²’µk×2nÜ8¦M›ÆèÑ£“:öòåËX–6hVV#FŒàÒ¥K w:L˜0cÇŽ1jÔ(Ž=ʸqã‚¡@{{;äÓO?¥³³“Ë—/wk]2bĈ„çITNII ¥¥¥aõ9r$/^ìVVSS¶mó«_ý*؊Dz,<üýLT@EEÕÕÕ¬_¿ž+VăÌ0 ***hjjJú¹$sïÕ³©© ˲ºçöKFo¿C¡­5ŠŠŠÈÊÊ ¶ItŸC%ó zß{²=Ô•+Wðz½1×Mµn‘’½×¡Ï/ô^Šˆˆ0Àƒ•T † &¾dl#"r=2 ƒ{ӧOsàÀÞzë-*++ù¾ðXÓ4±m˲Â~;Τ»1Lž<™Í›7³hÑ"Ž;ÆM7Ý€×ëåÕW_eâĉÜrË-òÚk¯aYVJ××Órb]ƒÛíàᇎú¨dïg¢ròòòÂöÇ0 \.WZžK²õ´, ۶ú—¥"u&Ùû =ÿ®î{O·tvvþq\ÒU·P}}¯EDäº1hÆè]“zkÐ<(‘Áª²²’+Vpÿý÷sìØ1ZZZ‚ÛbýØ+..v-ÿÈÆÆF†šôy½^/§OŸæÜ¹sTUUÐØØH{{; ,`èС¸ÝnΟ?V¯d$SN{{;.\;®¡¡!ê5áv»9vìXÂëŠu?“-çÒ¥K|øá‡,\¸-[¶¨´µµBެsoŸKèóNTÏhçJ¥üžÔ5•ð!ÙçÉ}WâÝ÷d¶ÇS\\¼öžÔ âß›tü½ŠˆÈuãºø Ÿ‰AL´’Ìà=v‚ýDD$M|>aSä¿¶wttðñÇ•=sæ YYYäææPPPÀ™3ghnnîÖ=Áív3mÚ4Þ}÷]hkkcÛ¶mäææ•D Ã`Ò¤I¼óÎ;Œ?>ø/óyyyx<>úè#:::‚ãµD¾I'‘dÊinnfß¾}œ9s†¶¶6¶oߎmÛL˜0ðAråʳfÍbÇŽ|òÉ'X–EKKKðÇs¢û¨Û¶Ù´i³fÍâæ›ofذalß¾=x¼Ë墡¡Ó§OÓÑÑÁ®]»ðxF“¨þ¡’ù®Ä»ïÉlý.EÊÉÉa„ lÙ²…K—.Çnñz½IÕ-ѽIÇß«ˆˆ N†a˜]‹¡¿×Sœ7ã~ç§»kR:º¥ZF¬®IWƒ¦°j†eÛv&†P""aÿþýÝþuþñÇûÜÙÙÉ‘#G¨­­Åãñ0dÈî¸ãŽ` 2eÊNœ8ÁÚµk©¬¬ä®»î ;~É’%ìØ±ƒ·Þz ˲=z4wß}wJõœòÊ+¯pà 70mÚ´þ®Êu%Ñ}×s‘LäóùÞËËË{hLÀ×5,[]“eNÈçÀr´1ÑœX˱¤5ˆé¯V!±."r}o_UùlÀôx<õ=ØODDDDDDDÒ£±±ñwøC—ÐßìD™§*Ùl¡_º5eB÷œdR«hˇhE¬÷¾óÎ;¯¤µ†"""""""’’^xá= 0ÀXà7{ ÅK*-YRmáÒ¯2!ˆIE¬Ô+¬EÌêÕ«w†qZ­bDDDDDDD®½öööÿü§ú§ÓÄoCŒÏ­û~½—lº9LèúÈqc"ÇŠ±c¬œàê¸1¡cÈpÓM7ž8qâIÖUD2HGGC†h(‘¾0}úônƒÍJßKtßõ\DD$“†aþð‡?üû­[·žÃÄXQ&ˆ=îK@䀾¡¿ë ݯ'A t°×À,Ÿc Ú›{òäÉoççç1ò•ª"’Ù4X¯ˆˆˆˆÈÀU__ÿ™3gþÐNìAz#[Ê„~†èC‘D¶¬!ÊçÈý“1(ë'ÖMKÔ?,Ö¾‘S ]먪ªúžÇã©U%‘¾wæÌ™ŸÎœ9ó7@áoEŠœˆò™õ‘ËɆ0ý®/‚˜T¥tÝ”X'4|‰|õUûÈ‘#Ÿlmm]o dDDDDDDDÒÏ0 ³¾¾þ;ãÆ{K˜Ðßæ‘¿×cý¶O‡~m ³EL²Bû‚E»‘¡0rÙ ™·VUU}wÆ ß à«@FDDDDDD$=Z[[×ûÛß~hæÌ™€V“Çûíë7Fê«Ä¡¯Æ‰‰\vD¬‹”7t:^LèçÀ< È~饗æÞvÛmæääLµm»È¶íL«D®KW®\¡²²²¿«!""""rÝ1 ÃÎ{½ÞC {Ö¬Y³ã?øÁi ÿ«ª#GX„ ÚR&2œ m“Ì€¾n|¸AL`]*ƒö†®wFlw„¬L¡!Œ#äs`@_WÈ1É^—šÒˆˆˆˆˆˆÈ`”(ÝX×Gø@¼¡]BÃ3ä˜È·&™tZz:Hoä1ÉH{ãJw) ¼†:0OGYà(ðÅùlÅ9Oèõ»N, aDDDDDDd0K&Œ‰ŽDŽ×Ù"&²õ „.Éœ;é«¶Gú*ˆIG°«ÌháMärèœýiZd¹Nº‡6ÑZßãs¬u"""""""ƒE¼&‘Ÿ#Ç} ÌÍyäkªC‹ÕÊ%ÚybÕ­·ú$°éï1ñ.؈Xx‚“Ðýíˆ}C[Ä8¸ÆB;¤ ƒ«-gâ…1¡’ÙGDDDDDD$S%xÄ SB[¾˜óа†ˆ2"—£ ÒÛ—oYJ»¾ R)»§ƒö†®‹Ö•(tÀ^è>ˆ¯3âsä2Ç&s """""""ƒQ¢p#ÖØ-ÑÞŒ+„‰6@/tv¢‡Ÿ#÷MVƵˆIW÷¤hÝŽ"ËÕ] »…¶ˆ +¡-a"[Ö„2fÈúhuˆµNDDDDDD$Ó¥2ðm´À$2Œ ”7V“è<ÄÙ··ú¬EÍ@îšñÜÈð%V¥Ðm¡ËVD9¡Ç†¾›åd‚…1""""""2˜$JÄ Db…,±B˜Ðc£uIJ¥‹Ô€ÔסAºº'E®O¥‹„·~‰ö&$Gœã“¦§ÛEDDDDDD¢DaF¢ $V—"+Æ>Ñ‚™hÇGÛY§Û- ~‹ˆÞ*&Ù.J‘-bBá%b;\¸b‡0½ WΈˆˆˆˆˆÈ@ÒÛÐ!™.Cf”õ‘K¬V/É”¯.ʵ®u«èÞµ(ÚúXG[­N"""""""rU´à$Z‹–Èõ;„‰Îd\kÈœ &Ö¶ž„1±Þ®ë<ÉŽ y¼ˆˆˆˆˆˆÈ`jˆ¯EK´nF±öïm“h[,ĤzžDaL´Ö2‰Â˜T¶E–¯×V‹ˆˆˆˆˆˆ\•(¨°">G [B÷Ke[´.I‰º) ˜ví¸X!M¼À%^P«5L¼²bÕUDDDDDDäz‘¨ P¬íåXû'jQ-äIæ|ɺ.ƒ˜Ðý“í¢ɇ1Éluîdê'""""""2Øõä5ÒÉv[е=Ù&ÙúE3h‚˜Tϯ•Jèºd˜Àr¢Ö-‘]bÕ7™ëP@#""""""ƒA2ÁD¬}"×' Rbý’̱±Î; ZÃÀÀ b"÷×Z¥7aL¢ýâÕIDDDDDDDüâ…1ñ‚‘Þ„0ñÊ‹W§X]Ó“ó¥#Œ‰¶oªå*€I,V—£hû–ãí;¨Bçµ:Q—t1ñ¶ÛQöOe{è~ù5{("""""""&Ö›‘"÷ /dI´=c£÷GKkÆ>' \b½ž:•±`ÔbFDDDDDD®© ‚kŸDL¬WTÇ+7#ZÃ@ÿ×2ŒèaK²¯ÆNt\2ÔˆˆˆˆˆˆH&èI(‘è˜d^1ÒDî—Ñ! dNyL¢0&ÖçdáMt.‰.Ùq\"×'Ú7Ý!LOé•k=FL¨þcìëãÓ qDDDDDD$õ& H6| lK°Ä*#ãBèÿ  7]”âŸÌ~©Žï¢V2"""""""áz†Äg&•4Éì—¨×\ éo%ëz{OúûžŠˆˆˆˆˆˆ¤SoC‹T[·¤c]"×m=¯CO[Ǥºo¼õ"""""""rU²-Xâ­ï«V0½=.-JÀ®0&•u‰¶ ”{#""""""’‰R ebmKW+˜Þ—6)lèë0&Ùs\«|EDDDDDD‹TÕd÷T! ôï[“"õ&ä]ÒˆˆˆˆˆˆÈ`ÖÛ°%•ãzÒš&# ´ð ¯ÊU+‘¡'Nº î71„èë·)”¹¶zÓšfЄ00pƒ‡tÔ«·ãÁ¤«"""""""×›t„+éPT;hHWÝR)'ለˆˆˆˆÈõ$Ý¡JºÂ“ÂÀÀÒY¿¾îò”î󉈈ˆˆˆˆô§TƒŒÔ…h@†09aÁ@ dDDDDDDD$}®‹& “B ½rZDDDDDDdpè‹ÀdÀ‡0yAD_Ö7Óî…ˆˆˆˆˆˆH&éË $#BÈÌðáZÕ9ˆˆˆˆÈ@q­Â‘Œ a ³Ã†þª{&ß3‘të¯ $£˜€Á* ôkèõ 5ÐŽ^¿¸KH0X®CDDDDDDDbËè_€1Ø®GDDDDDDDA0Xƒ‹Áz]"""""""דAÀ\Åõp"""""""ƒÅ  _B]O!Åõt­"""""""™fP0×k8q½^·ˆˆˆˆˆˆÈ@r]„/¡Høé>ˆˆˆˆˆˆˆô½ë.x‰¤"6Ý‘ž»îC—h6ôœîˆˆˆˆˆˆ\Ï´ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ ÿ¢ šÇ|ÐQ^IEND®B`‚flatseal-2.3.0/screenshots/en/3.png000066400000000000000000003570661467660615300171600ustar00rootroot00000000000000‰PNG  IHDRb6½‹%ðsBIT|dˆtEXtSoftwaregnome-screenshotï¿>-tEXtCreation TimeSat 13 Apr 2024 09:30:49 AM -04=ødw IDATxœìÝyx[å6üûí¶oñÇΞØ}s)HiÂR ¥LiaJÛ¡ ý ÃË´¥/”™ôšv†~¶“¦ ˜² ’„8‰³'v'ñnÇ»e[²$k;ïAB²%Y²%[’ïßuùŠuÎÑsÉŽÏsn= @DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDkÂDW Áñý#"""""¢ÉHšè $* ¡ñý!""""""Šƒš 4|ŽïQì0œÇÉþú‰ˆˆˆˆˆˆ&¤ e&c1_3Q¼šT¡Ìd %&Ók%""""""J4“"Iöp"Ù_Q2JÚP&™ƒŠd~mDDDDDDDÉ.)Ød +’ñ5MVIÈ$Sh¯%ê@DDDDDDmñ†ÄCÆ,Y‚ƒñxÉò^ÅÂx% Æ$z¸«ú'úûBDDDDDDbœ$l “ÈC´ëžÈïQ¼‹vx’aL¢†Ѫw¢¾~""""""¢D­%á˜D "¢QçpËHÄ÷‡ˆˆˆˆˆˆh¢…D#HI¨0&Ñ‚†±Ö7ÔóÇRv¢½DDDDDDD£1–Ð#ÔsǦ$L“HB,‚’HÊL¤÷Šˆˆˆˆˆˆh¼E†;6VAOÜH”pa´õK“(ï Q< '‰v ÷aL"„ Ñ aF*kèþDxˆˆˆˆˆˆˆâÍÐ@d¤€$Ðþ¤ câ=hˆVîÜ0ñþ~%")È÷¡ŽéØpÏWâ=xMý a„öGR—x‰ˆˆˆˆˆˆ¢!îJCþ©œÑ„* bF!V!L8L4&÷%""""""š,F3×K¨@&iØx bÂD²DÚk†ˆˆˆˆˆˆh2‹$\ñÝ>i˜x "­×hC˜@ljc8/ÑdIÀáãù± cÄ„!Ú!L°^-C‹¶ÇãûCDDDDDDïMÎ;4 ²Œ¾$tAC$u '„‰$€ñýzüXêEDDDDDD”ˆ" 1)Ò/ ¼@&ša ƒ˜Æ3„ñ `DŸmžÇáQb""""""Jvá.?íËýÙ—„ÏÃÏcÀ?™4aL<Ña†n ^d>ßû9¡&ò%""""""šŒBÍéâ R3kÖ¬7ñyãDð0f¤ùbFÆLø< »‰F4Rãy,àóF@e4ÿȆˆˆˆˆˆˆ(v$I’M›6íÅŽŽŽG¨àoî;ºÅ÷C¾f~0aâ!ˆ W8sà Ý7´GŒg.>ë #—Ë¿À†ˆˆˆˆˆˆ(öÒÒÒžª©©¹WÂÏý¹'Œ„sßìqÜJ¤ &˜`? ¡óÅøNЫصk×õì CDDDDDD4¾ Ÿå•WfáóiC†®Z<ô~ˆn¯˜ 5Ñ/`´sÃøn 6,iè2ՊϾ”Tf³ù·Û=-âQÜ wŽ·Û ·ÛÍɹ“€ E¢˜ Ÿ/ÑH&{;.Ú>ƒƒƒÕétOâÊ|1v\™+ÆÏ牑|’Þ@sÆ =f$öË“¨?µPI˜oãáI×dd»víºÎ³:M>’$ÁétÂårMÚ‹w²‘$ .— N§“?S""¢$ÆvÜÉÐöQ©T_yå•WfâóáIÁzÅ„Ó1#¡$j3T°7ß·WŒ7ˆY¾|ù7Æ©^D‡&û…;™y%DDD”œØŽó—èmŸÍ›7¯Çð &Xø‚ÛJ"1‘¾Ñ¾?4ß½KXËåòüÏK49Mæ.¬“…$Ip»Ý#HDDD …í¸À¹í£×ëKás¯ŽÀ÷ò£ÉâÚD1c}sBuOò5ô‡*`㹉(A%êEŠ"ß3Qòáõ=¸D}od2Ù|\¹G÷ë<àÐpïÿ#1a|¢N#á Q öƒ%¢I€Ÿ¢Lü9%^߃‹æ{㙇gè„ȾËårBTrŒ,øß«‡º§Oš_€xbÂI½Â;6šîLDDDDDDD“‚$Ip8p:A÷»\.¸\.8Èår(Š12’$É|½o¾ Ý踸nâ=ˆ &’Ÿt 9cˆˆˆˆˆˆˆ€Óé„Ýnø9N§J¥rù˜£…ÑÎ ×K05D'H °…=aˆˆˆˆˆˆˆ‚p8‡0¾ìv;Gk°g Ûa\%j˜@b1yOHííí¨ªªB{{;¡R©››‹ââbdggÇòÔDDDDDDDcât:£¢8‚ž1Áîï®÷K ÉÄŒ·Û#GŽàüùó~Û- jkkQ[[‹ââb¬\¹¢Èy‰ˆˆˆˆˆ(¾H’4¦ž0CÙívÈd²hMâ›Ôâ9ˆ gÞ‘Ž O#—˱páBÌœ9©©©@mm-Μ9ƒªª*@iiéxVmœ={ÇŽ¬_¿Ó¦M‹Éy¶mÛ¹\Ž{g¯¿þ:àÞ{ï…B¡ˆúùÆãÉnË–-£zÞC=åšD—ÛíFgg'úúú`·Û!Š"Ôj5²³³¡ÕjQQQQQRR2au¼xñ"¬V«÷±B¡€J¥BFFÒÒÒb~~·ÛsçÎJJJ Šb\¼/D“ÑéÓ§qôèQÀM7Ý„ÂÂB¿ý[·n…\.Çý÷ßðñhÊŒߺ8¼úê«€ûï¿?f×þXŸƒˆ&ÖÐ6’L&ƒF£ANNRSS'°fã+Êɼe*•ʨ—ë#’‰yã¶M2w×wu¥ˆ´··{C˜7bÑ¢EÐétE:‹-ÂÆ!—ËQUU…ŽŽŽhœ6îÕÕÕy¿ohh—sÊår¤¥¥!---*]àöíÛ‡-[¶ §§'fç äQ__ööv8N¤¦¦B&“a`` .—Uôý@cccÄÿOqæÌØl¶°Ÿã §Ôj5{M°ÚÚZï÷õõõq[æHär9ÒÓÓ‘žž•ëòÞ½{ñûßÿ~ص?šç ¢øe0`0 Š"Ìf3êêê"jëŒÖhÚUÑæY¢:ÚœNçXÚÃ1¹‡G“ñê2¦¦g8ÒÂ… 1eÊ”€ÇL™2 ,ÀÉ“'QUU•ôóÅô÷÷£»»óçÏGmm-áv»c~ã%6mÚ”ðçHvñÞ³e4¬V+Ìf3´Z-fΜéÝ>¿÷£1uêTÈdWV´Z­¨¯¯G__ŒF#ÒÓÓczîÙ³gÇ´|"™ç:]\\Œšš444ŒùïU,Ê ‡ ¸í¶ÛþD ¼m¤ÚÚZ˜Ífô÷÷C­VOpÍbo¤fÛ¶mÈÎÎÆu×]•JÄþýûÑÞÞŽx dÙö&LÚÀ%˜d bͰmmmàwóÈÌ™3qòäIïñÉÌÓ¦¨¨6›ÍÛS //Ï{̶mÛP\\ ›Í†¦¦&(•J\}õÕ˜;wnDÇ µmÛ6Èd2|õ«_p%Ù={ö,jjj000€ôôt,^¼™™™8uêZZZ`±X V«1}út,]º2™ ûöíó~²÷Î;ï@E<øàƒAÏqæÌÔÖÖb``ƒK–,AAA_½f̘¹\ŽÆÆF¸\.Ì›7K–,ñÓÔÔ„S§N¡¯¯ …iii¸á†bÝ•¢À3–ÖívC’$ï8Ø¡7 ’$áòåËèëëƒ$IÈÌÌDNNŽß10p8P«ÕÈÉÉN§\ºt ‹³fÍBjj*Ün7ªªª IæÎ ¥R —Ë…ÊÊÊa¡P0¹¹¹hjjBww·7ˆq»ÝhkkC?\.RSS‘ŸŸ¥R‰ÆÆFôöö.\¸A°`Á8N´··Ãl6Ãáp@.—Ã`0 77×ûžŒ4©¿¿°ÙlÉdP©T(**ò6Šˆhì<×·éÓ§Ãf³¡®®mmmÈÏÏi™[·nEII l6¡T*±`ÁÌŸ??¢c†Úºu+d2™÷&@’$œ>}5550›ÍÈÈÈÀÒ¥K‘™™‰'N ¹¹Ù{íŸ9s&–-[™L†½{÷¢¦¦°cLj¢ˆ¿û»¿ yŽK—.a``iiiXºt©ßPì­[·bæÌ™P(¨¯¯‡ËåÂüùó±lÙ2ï18yò$z{{¡P(žžŽuëÖyorˆhâhµZ˜ÍfooŽPm# tf4íªñæv»CîOKKCGGvíÚ… 6öìÙƒžž †1•†¡÷óñ×å|Œâï£Û8788#Žôì÷ŸÌêëë¡T*‘››ëmöpæÌttt ''f³DSSSÄÇ„røða?~n·Ó¦Mó¦±2™ MMMÐëõ˜>}:$IBEENŸ> àJˆäQTT„Å‹‡<lj' Š"¦NŠžžìÚµ ííí~Ç]¸pÐét°Ùl8uêš››f³ü1Ìf3æÍ›‡ÂÂBÈår†0 "%%¢(Âb± ºº­­­ÿ¯»\.ô÷÷C¥RÁår¡½½&“É»¿¥¥mmm:V«uuuèõzð>€Ëå‚Ûíö–c6›ÀÞ„Ãsñô­scc#º»»¡Ñh ×ëa2™¼ÿ}/¶ƒÁ&‰¢“É¥R ƒÁI’ÐÙÙ9ìÿB0v» °ÛíÈÌÌ„^¯‡(Š aˆ¢¬¶¶J¥yyyÞy\Æ:”(Ü2OŸ>ööväææÂl6ãÀhllŒø˜PÊÊÊpìØ1¸ÝnÂápx¯ýÐëõ˜1c†÷ƒ”S§N¸"yù}Xì¢(¢  ÝÝÝøÛßþ6ì·êêj444@¯×Ãf³áäÉ“ÞvŒÙlÆîÝ»a2™0þ|LŸ>r¹œ! Q°ÙlÞpÄsªm4Rf4íªñ6RX²nÝ:èt:ôööb×®]ؽ{7zzz Õjqà 7Œ©lJÞ11£R©`±X000òÆÇsã”ì×¾¾>ôôô`ÆŒÞÆ‰ hhh8Qñm·ÝQQ[[‹}ûö¡ªªjØÄ¾áÈÀÀª««¡×ëqûí·»™»ë®»¼ß›L&¼õÖ[hiiÁÒ¥K1}útÌœ9µµµX¼x1222Bž#==›6m‚(Џpá<ˆ³gÏûCzÇw@&“áôéÓ8qâZ[[QPP€¾¾>¸Ýnäää`Ù²eq9œ%Z’q²^…BéÓ§£µµV«èêê‚Á`@~~¾ßœsçÎ…(Šhoo÷öÑétp8èééZ­Æœ9s zzzÐÜÜŒÎÎN¤¦¦B¯×£­­Íû÷Äl6{?e1™LÈÌÌÚ„CEˆ¢èíÑ388ˆþþ~èt:o(év»½ ¤¥¥¡··999Þ(ú}jm·Ûqþüy˜L&äææŽXÁÁAH’„ÔÔT¿^4D=½½½èééÁÌ™3!Š"¦M›AP__5kÖŒK™wÜqDQDMM öîÝ‹sçÎ ›Ø7œcÀùóça0¼×\_÷Þ{¯÷{“É„7ÞxMMMX¶lf̘Y³f¡¦¦Ë–- yí?þ<ÒÓÓqûí·CETWWãÓO?Å™3g†ý½Û¼y3d2N:…cÇŽ¡µµÓ¦MCoo/Ün7rss±bÅŠ¤¾ö%ŠÊÊJ¿ÇYYYÐjµ°Ùl!ÛF¡Ú0#=7X»j¼4KJJ 6lØ€]»vù…Tëׯ‡V«SÙ41AÌXZÚ¾bRnn®w‰êE‹=ÎÓew¢Îñâ–TWWçý'I, :::üæÇñ$ÅÀç=PúúúüÊ ç˜`ŒF#$Iòëé««« çÎC{{;ìv;$IŠx‚,Ï9òóó½õœ1c<8¬žjµÚ[Ïûàé™™ •J…††¼öÚk(((ÀÂ… ƒ6)þhµZÌ™3&“ F£ýýýÞ‹”çæA.—{ORRR\é%\¹HK’Nç½x§¥¥¡¹¹Ùû{©V«¡R©¼a‹ÉdBZZ½]gÍf3”JeD¡¯Ûí†Ûí†J¥‚ Þó™L&œ9sÆïX§Ó²§–'ˆ²X,ޱƞ×8F™L†¾¾>TVVB¯×#;;{RŒË&/žëtmmíˆ×éX”èºîù[É1Áôôô„¼öwvv¢²²íííÞkp¤½•}Ïá©çÌ™3ñé§Ÿ«g k¿çolVVT*êëëñç?ÿÓ¦MâE‹™™Q}ˆ(z ƒ· /Š¢wxåHm£Pm˜±´«âÍОÊ2™,^z.G²rÒhË‹©dí³p¦¸¸Ø»Du~~~À {;::pöìY‚€âââXU%.ø®–4´KrCCCОg©´Pÿ‘Ã9&ÐñX“É„>øZ­×^{-ÒÒÒ¼ËRGÂs£é{—ËAB®¬0ô“~µZÛo¿•••hllD]]êëëñå/YYY×+žÅsÏ–hÐétÐét0›ÍÞyƒú;àé²éû»äÙæû)©^¯Ggg'L&l6rss¡V«a6›Ñ××›ÍñïŒg8“'ððüîjµZL:ÕïØP»ÝŽšš( @­V{—«‡\.ÇܹsÑÕÕ…¾¾>ôöö¢¯¯³gφF£‰è5Q`¾+ù^³+×íÑ1£-s"®ýï¿ÿ>´Z-Ö®]‹ôôtï²Ô‘ð\û}»Ú{çH¯ýwÞy'***P__ÚÚZÔÕÕáÖ[o ºÅVAA qá Âd2A§ÓØ6!hf´íªñ&BÈž+V«»wïF__Ÿw8U__vïÞõëׇl«E¹—sRΓ¬ALÌdgg£¤¤çÎÇ~ˆ `Ö¬YHIIÁÀÀjkkqöìY8N¨Õꈆ $šÞÞ^ôöö"77_üâý¶ÿõ¯ECCV¬XáÝÞß߻ݥR‰––¶bK8Çãy¯›››ár¹üqp:(((@^^ž·1åÛ¨òÜüz&b ÄóG¨©© Ë—/‡L&Css3$IЏ7KJJ V¬X+VàØ±c8{ö,Z[[“.ˆIFžÞT¾ Ï…,Ü¥N==Xúûû‘——A¼ó¾ø–ë büðClܸ1)o*<Ÿ‚ ¿%-- :&“ ===~©wÞyÙÙÙhnn† ¸ú꫇•ê•J³ÙŒ'N ›]<33¹¹¹hkkÃ{güü|F,Y²Ä;éÖ… àv»½“‰úþ‘ð>GŽAaa!.\8ìgzz: ÐÜÜŒwß}™™™hll„L& 9Tm(£Ñˆ}ûö!//J¥Ò;yW¬—¦è0™L¨¯¯‡B¡ðNÄëÛõ<jµÚûÿäâÅ‹P«Õèïï‡ ~Ÿ&§¦¦B.—ÃjµB«ÕzçwñüEqÄÉÃ[ZZ , $IB^^ž·GŒB¡@FFº»»qéÒ%¤¥¥Áápx'¾ôÔ._¾ìí~ëùTÇÓmßÓ(Ô§ r¹v»mmmÐëõhnn†V«…L&óvñçÐ$¢èðô\:×Jzzú°ë´Z­†ÉdÂñãDZpáÂa=ËFR¦ÇŽ;““ã /­꘡uñå{íûí·QPP€žž,]ºÔû·±ººÚ»‚ àí÷ÔóðáÃ(,,ÄâÅ‹^û§M›†¦¦&¼ýöÛÈÌÌDCCd2YÈÉý‡2Ø»w/òóó¡P(¼í(^û‰&^ZZ:;;aµZ½ÃBµ<+½jÃŒ¶]5ÞsåÄxÞ‡n¸Á{/»~ýzìÝ»===#–Gâ²GM¼1qME”––bæÌ™¨ªªB{{;l6T*rssQ\\ ½^?üF£1iÃO"ÐdzÓ¦MùsçÐÐÐàmä¨T*dee¡¥¥Z­K—.ö ÐHǬX±‡Fuuõ°®~pà 7àØ±chiiñNÜër¹——‡E‹¡ºº555(,,„N§CWW—÷¹ÅÅÅèééASS.\¸€Â€Ÿt]ýõ8vìšššÐÜÜŒ)S¦`ùòåõJp»ÝÐh4¨­­…Ãá@jj*V­Zå·v²HÆÉz=¿§f³‹Å¾N™2eÄåü|¡µµýýý0™LHIIA^^Þ°ù^t:ŒF£ßáz½V«ÕoŽ™`z{{!”J%ôz=¦L™2ìï‘çÆÀh4¢³³J¥Ò;¯ p%`òL>×ÓÓ½^ÔÔTdgg£§§F£ƒJ¥V«5h]òòòÐÒÒ‚žž(•JÈårôööÂårA©T"???¢ ˆ(¸`¡‰g[ee%êêê‘‘•+W¢¬¬ UUU˜:uê°Çž i#)¸ò÷rÊ”)ÞÐuùòåÆ.tÌк µ~ýz”——£¥¥UUUÞk~~>/^ŒóçÏãÒ¥K(**‚^¯÷»ö—”” »»¨®®FQQQÀ@}ݺu(//Gcc#ššš•+WFô7ßårA£ÑàÒ¥Kp8ÐjµX½zuX Qìåææ¢®®mmmHKK Ù6’$)df4íªñ¾W”ËåÞá<ðÀöi4š=a|˦Ð&¢çI8ç vŒ`Ÿè³Ïó¯è³OþÙ— €€Úd2UÇLÎ6›ÍÆdffâÖ[où9ãÕ¶mÛ ÑhpçwŽéJ<ÄxºÍê‚CÉÅó >MŒ­[·B£Ñàî»ïÓ1DDlÇ…iÛÇn·{çÁй\ñ\8J¥²€ €À çg_ž±¤n|Þ«EòÙæKBðž/áÜüs²Þd¡V«±qãFìÚµkÄ¡DÉ*ž{¶MV …"êA ? ƒ˜S«ÕØ´iÓDWƒˆˆˆˆˆˆÈË3t=Ôb%‘ð¬(E#‹«Ytˆˆˆˆˆˆˆh|Èåò¨ôbQ(œ&œ#†ˆ’çˆ!€]c‰ˆˆ’ Ûq¡¥íãt:GÝ3ƳÃhqŽ"""""""šTär9d2GØóÆxzÓp8RäÄMrž9c<“øºÝn¸ÝnxF“‚Q!Š"är9˜1`CD“Š àÐÄädžQòa;.¸h¶}Aàïãd½D4©ˆ"ÿìMü9%^߃ã{“XøÓ"¢IEEö–Hržn³DDD”\ØŽ ŒmŸÄßM:2™Œñ$%d2ÙDWƒˆˆˆb„í8lû$&ÎCD“Ž ËåÃ& £Äå;y%/¶ã®`Û'±1ˆ!¢I‹/"""¢ÄÄv%2þæ1DDDDDDDDã$ƒÎÜDDDDDDD”’î?ƒ"""""""¢¸Ä †ˆˆˆˆˆˆˆhœ0ˆ!"""""""' bˆˆˆˆˆˆˆˆÆ ƒ"""""""¢q †ˆˆˆˆˆˆˆhœ0ˆ!"""""""' bˆˆˆˆˆˆˆˆÆ‰|¢+¯¬V+ìv;œNçDW…ˆ>#—Ë¡T*¡Ñh&º*DDDDDD£Â f—˳Ù̆(Ö{ÑÞ IDAT9N8NØívhµZÈd²‰®QD84i†0DñÏétÂl6Ot5ˆˆˆˆˆˆ"Æ Æ‡ÕjeC” œN'¬VëDWƒˆˆˆˆˆ(" b|Øíö‰®$I‚Ûí†Ëå‚Ëå‚Ûí†$I]-¢¸ÿg‰ˆˆˆˆˆ"Á9b|LDoOàâr¹àp8Ñi–ÐcqÃj¿¾h”2SEd¥ P(äÉdÞ/¢ÉŽ=؈ˆˆˆˆ(Ñ0ˆ™’$Ááp ßlAyƒ '[€ª.Z°»wRRÊÜÈKu 8Ë‚eVŠÐiS P( Â8¿""""""" 1ãH’$X­V\jÀ;çd(kVÃì¯g‹Ý%¢¡_…†~>¬´ Ö˜qûU.ÌÊM…F£a CDDDDDDçÄŒ“ÁÁAÔ¶öáO'8Ô¢‡kŒÓ¾˜2|T—Š=õÀš \jÆô\T*UTêKDDDDDDDÑÇ &Æ$I‚ÑØ‹¿žqâõs:ØœÑÙ%Ÿ6¥àØew,RÀ`0°w QbCn·õ-øÕ!Ž·écz.«K†-§õ¨ì´á{¥(ÌÏ‚(rQ,""""""¢xÂ;õq¹\8_ߎg÷¤àx›fÜÎ[~Y§?JAEM\.׸—ˆˆˆˆˆˆˆFÆ &®„0ø?{thìWŽûù[Ì ütŸÕ  cˆˆˆˆˆˆˆâƒ˜(“$ uÍø¿ûµè´*&¬9žß¯Eãå.HÒgàÔ©S¸õÖ[ñ‹_übؾ'žx»ví ú8ÒòÆjèù¿ûÝïbûöíQ?Ïx•ODDDDDD‰‹AL”uwwã?ŽhÐlÿž0C5ö+ñëÃ*twwG½ìýû÷cîܹ8zô(ìv{Ü•ʪU«0kÖ¬¨”µmÛ¶aáQ4Ë'"""""¢ä &Š, Þ©Æ4'L^šÿrw.NütNütþåî\ä¥~N壭¼[é†ÅbuC9N:t<òär9Nž<Wåäk_û–,Y’°åQââªIQâv»QßÖ‡×+ £z¾Z!àïÖ¦ã{2¡U}žÝWjÀW–ê°å@/~µ«ƒîˆË~­B‹U}(ž¡ŽÊJJLJN§Ãœ9s°bÅ ”••aÕªU1+ï‰'žÀ7Þˆƒ¢¦¦xôÑG1gΜ°öõÄOà‹_ü"6lØàÝöî»ïâÃ?Doo/æÏŸG}غu+ÊËËÑÝݬ¬,ÜsÏ=¸á†o½õÞ|óMÀÁƒ±qãF<úè£ÃÊ—$ Û·oÇž={Ð×ׇââb<úè£ÈÎÎöÖgõêÕ8qâjkk‘››‹Gy%%%€'N`Û¶mhjjBzz:®½öZ|ýë_õûMDDDDDD‡=b¢Äd2áO'U°¹d?wÓb>yz~ôå)~!Ìáš+½X4JßY—=ÿßtlZ¬‹¸üA— ¯žVÂd2EüÜ@öïßk¯½PZZŠ#GŽÀétÆ´¼ßþö·xàðÊ+¯`þüùxöÙg100öþPÞzë-ìÙ³O<ñ~ýë_ãú믇^¯‡\.G^^þéŸþ ÿñÿo¼ÿþïÿŽ––ÀwÞ‰»ï¾k×®ÅÛo¿G}4`ù¯½öÊÊÊð£ý¿üå/¡P(ðÌ3Ïx_c?þüç?㡇Âý×aÞ¼yxñÅát:a6›ñüóÏcÆ زe žyæ¬^½:â÷˜ˆˆˆˆˆˆâƒ˜(p¹\¨m·âPKJDÏ»zª Û+Ä+_ÏÇÔôáûÞõŸM¸ïÿoÂ…¶AÀÔt^ùz>Þ{¼K‹"þt°%uí–1¯¢d³ÙP^^Žk®¹°téR8Nœ>}:¦å}÷»ßEII 233ñðÃÃ`0`ÿþýaïÆåráþçðï|³gÏFff&¾ð…/@­Vn¹å!77wÝu²³³qáÂ…°_ŸÃáÀÛo¿ï|ç;Þr~ðƒÀb±àÈ‘#½^Ç{ sçÎ…Á`ÀæÍ›ÑÛÛ‹Ë—/£»»N§Ë—/‡V«EQQQО>DDDDDDÿ84) , Þ©’à !¬ãÓSexü¦L?Å1Q`2[p¨95¬co]¢Ã‹wåB§¿3’Ó%áûxçD?~xËÜ»ÊQî\®ÇMWkñÔ›mxïÔÈÃŽÊZ4xØ<0¦ fÿþýèëëÃÝwß=lßc=™,²¡Y£-OE¨Tª åŽ´ßÃ3|)Ðß6› O>ù$Ö¬Yƒûî»S¦LÁÓO? ·;üyzÜn7\.äòÏÿ») (•ÁWÖòK¢(âg?ûΞ=‹={öà…^ÀÂ… ñÌ3Ï„]""""""Šš4Fv»Ç[X\Ç µ¨P_ÝŸQã«ËìÂSo¶áK/×ãH S‹øÕyXP ñùNN¶`ÔËC àĉxùå—ñî»ïz¿¶mÛQQQQ“òŒF#>üðC¿ç^¼x………aí%77’$áâÅ‹Ãö]ºt ýýýøÆ7¾ÂÂBh4ÔÕÕ¡««Ëï¸Pýòòò *++½ÛÜn7.]º„¢¢¢ëç±`Á<þøãø×ýW9r$&K’Qì1ˆ#»ÝŽ£ áMT{ÏJd" I€Ã5¼F¸*Z±ù?ñƒ¿´Á-rQÀ½«Â[­éX“{ÔALYY233‡ ãÑëõ())AYY™÷q{{»·—ÉÐÇ‘–§R©pñâEœ9s&“ ùË_`µZ±fÍš°ö;?èt:”––â·¿ý-ZZZ`µZQ^^›Í†´´4X,|ðÁ0™L8xð xW;€)S¦ ¢¢Þ¡U¾4 Ö¯_ßüæ7¸xñ"z{{ñ»ßýƒ!¬%®M&vïÞîîn ¢¢¢*•jL½šˆˆˆˆˆˆhâ0ˆ#»ÝŽêž‘‡À@®áÊДº.;®y¾oëG€l ,®Ò≛3!~65J^Zx£ÌÎw+GÄìß¿ß;©îP¥¥¥8tè$IÂm·Ý†}ûöáç?ÿ9 {iy)))X»v-~ó›ßàá‡ÆùóçñóŸÿÜ;Ôg¤ýÁÎïñýïEEExê©§ðÐCáí·ßF? ðàƒâÕW_Å#<‚Ç£´´Ôï¹7ÜpŠ‹‹ñÝï~¿øÅ/–ÿíoË–-à /¼€ï}ï{0›ÍøéOê7¯M0(++Ãã?Žûî»}ô~ô£…ÖDDDDDDDñ+¼ÙeÇÿœÁŽì}öyû~/ÿìK@@m2™ªõŽÍpöö|õ´p¸GžeËÃS±¾D‹KvÜðb tV ~r{6®š:<Ì™öDõ°m³s”øÉmÙ¸n¾ÿœ4»Ï™ñÐï[F¬ƒBpá/w›‘““=â±ñâ‰'žÀ¿øElذaTû)¹effÛf4‘——7µ!""""¢H(•Êb6ƒœŸ}y&甆|ŸÇðÙ¬›C8ÝF?de8Yï¸\.t ¬&˜Ã5Üòr=îX¦Ç3›¦ KøG’–"Ãno¥¥P’ Ý`ŠÛí·RŃ˜1$ Ýæðæ‡ Å-ÛõンfaïxQNdëd bˆˆˆˆˆˆˆ&ïÆÇH«ME†b ¬c=ÓɈ1îT5rRR4ѯˆAÌ)•J¥ô…ul[ß•ž3E™J|e™>ªõ¸l ¯WÎL J¥2ªç&""""""¢ð0ˆ#¥R‰ÙްŽ}ýHœn 2øÕýyØþX!®ž:ö¥©]n o”‡-ÌqÆ,ˆÙ²eKTësˆˆˆˆˆˆˆâ ƒ˜1R*•X5]88â±gšløþ¶V˜lWVZZ5Kƒ÷Ÿ˜Ž¹;YZÙ¨Îo²¹ñ½m­8ÛlñØqË åìCDDDDDD4AÄDÁÔü\”hÛÃ:ö½S&\ó|-þûS#\î+óÅÜWjÀÁÿ3OÜœ¥<¼ dÜðÖ±~|áçuxï”)¬ç”hÛŸ—Ö±DDDDDDD} b¢ 557Ïè‡(„7c®qÀ…ÿµ_þe=ŽÔX)J?¸9»8_^¤ ùü“ 6|åWxüµVt™Â›F$Ü4ÃŒÔÔÔ°Ž'""""""¢è“Ot’L&Ãò’B_jAå@AØÏ«hÄæÿlĦÅ:<³i ¦¦+0cŠ¿y0ÖX†ßbtàù÷:Ãîã«$¥ ËŠ “n”G{{;> ‡ÃôôttvvâÞ{ïv\WWŽ9‹Å•J…5kÖ ++ IöîÝ‹žžÈd2¬^½999°X,Ø¿?úúúàr¹0gάX±bLõ%""""""Š' b¢$33w̮å³9t+"zî{§LØUiÆß­MÇ÷6dB«Q:+Å»ßjwcË^üjW7Ý×M):qûì^deÍŠø¹¾ìv;öìÙƒ7"##---hhhvœÃáÀîÝ»qóÍ7#==سg6oÞì ‚-Zä-ãã?ÆæÍ›¡V«qÍ5×@§Óappï¾û.ŠŠŠ=¦zÅ MŠQ±jñ<¬M»0ªçÛ^ù¸ëþ¥¯îC§É‰N“¯îÃu/ÖáçÿÛ9ª®O¯Féâ¹űý¸;::––†ŒŒ @nnnÀ‰ÛÛÛ¡×둞ž(,,DJJ ŒF#@oS§N…Á`@WWDQ„ÓéÄ©S§pôèQX,X,Ã{%*öˆ‰"ƒÁ€{–§ éÀeT[òGUFk¯O½Ù†§¢T§¹šVܵ,ƒaÌe¹Ýî°V\ tœÃá9Nˆ¢ˆ®®.8pkÖ¬Azz:úúúàp„·48Q"`˜(›7oî›ÛŽ) ²}¸~æÍ›ò²³ÑÞÞŽ®®.@ww7ìv»w¿L&ƒËåBvv6:::ÐÙÙ hkkƒ$IHKKpeŽϾ®®.X,dffÂh4B¥R!++ .— íííÞðÆS6Q"c˜(×–.E¿åþP»½Î”‘Ÿiò|}FÖ–® „·$öHÔj5®»î:ìß¿¢("## Åçóá”””à½÷ÞÆ pÝu×áàÁƒp¹\HMMÅúõëýB•“'OÂd2A¥RaýúõËå˜>}:ZZZ°}ûv¨Õjäääxç”ñ-›+?Q¢ŠÎzôÏì!À>ÑgŸç±ï÷òϾTÔ&“©J’†/5ÝÝÝFÕÂc³ÙðÁLJ°­á*t8Æ>,(YŠ~úè#Ü~ûí1;ÑH233‡m3ÈËË›€ÚQ$”Je1€AÎϾ<“¤JC¾‡Ïcøl~“ïÿœPÂ9&j84)FÔj5n¹q ¾5ç<æhZÇí¼s5—ñí9çb x‡UWW£°°0êç """"""JVšC*• ë¯_ƒ¬´Søßª.|Ú;viäÉnGC)Øñ…´j|¹DÀâÅ×z‡ôD[cc#ª««!I²³³QZZ“ó%#11&—˱|ùrää4áêÓåØÝ^„*KÜRtF…‰‚„’”&ܘӈÒÅóPPP•rƒ)..FqqqLÏADDDDDD”¬ÄŒ“iÓ¦!''Å/âôŃ8Ò“*ËTXݪQ•§l(N½ŒU™—±hv.æÌYÖÒÒDDDDDDD4qÄŒ#¥R‰«®º ³fÍÂòÆF46Çù .™ h²¦ÁèÒÃ!þ‘('Òeý˜¦6b¶®ÅYƒ˜65……×ÄtB^"""""""Š1@­Vcîܹ˜3g–ôôÀh4Âhl†Éd‚Ñ&ƒÙ!Ç K€ PŠnhdh$hµZ¤§§##cÒÓÓ£¶,51>är9œNç¸Odffú-¿;88»Ýî]™H&“A©TB¥Ý&¢d&—óO%ÞÅøP*•ãÄ¢R©º…‰ó"Q¢'ºñD£Ñðv¢!—Ë¡Ñh&ºDDDDDDa3„V«eCçär9´ZíDWƒÈK’$¿/""""¢`˜8 !“É`0`µZa·Û'|¨}N.—C©T²' ›Ñ†*á>“®M> b‚Ðh4¼Ù#"šdÆ»7ËÐó1˜¡dW]]?ýéOhooGII ¾ùÍoÂ`0LtµF%™^ ¯‰hñ…sÎ`Çö‰>û<}¿—ö¥  6™LUì:N”¼ŒF#òòò&º”Ær-^/ fÆÇÅ‹ñµ¯}Ío[qq1¶lÙ2ªã&›pß—¶¶6|õ«_…Õjõn»êª«ð»ßý¢˜X£å“éµM4¥RY ÀÀ`€ó³/÷g‡HC¾‡ÏcølÖ8 §Ñ6®{ÄѤIøÐ>T#-¾Ïe(Zss36oÞpßõ×__|qœkžD­÷hìÝ»×/¸€ÊÊJ455¡¨¨h‚j5:ÉôZˆˆhü1ˆ!"¢¤N nè2Úp&P¨¬` C™ÐvíÚtß¡C‡`µZãrÈq¢Ö{4ìv{À탃ƒã\“±K¦×BDDã}'‰ˆ(i´ŠQ¨•ކ®„4Ö‘Â-/œsqu¦á>ú裠ûqðàÁq¬MøµÞ£±zõêaÃvòòò0cÆŒ ª‘¿^x¥¥¥~_;wî xl¼¿""Šo bˆˆ(é„ *‚Á’@á‰Ûí†Ëå‚Óé„Ãáøåt:ár¹àv»C0¡‚™‘B2WÔÔÔ ®®.ä1{öì§Ú„/Që=ZsçÎÅsÏ=‡¢¢"h4,Y²/½ô ÅDW-bÉôZˆˆhüqh%‘z‘D²Í¸x¾<¡Ê Ý‰‹Ý&Œ.˜Ýtú—£’ ЪD¤§Ê©S #U„Z©€(ŠÃ¾<ÃŒ<ÿ‚äÙjˆÓd²jxGYYYÜ óIÔzÅúõë±~ýú‰®FT$Ók!"¢ñÅ &J< öxæÛà'"J&¡zŒŒ´Í÷±Ûíöör1š¬¨h±£ºÍŽKn4õº­"ÜÒHK=“û; B.HÈѺ1ÕàFQºˆ¢ fLQ $_ Cª …r¹2™Ì[‚ C™PsÅLÖ@fh ±nÝ:466âÒ¥KÞmƒƒƒ(++Ã7Þ8ÞÕ *QëMDDDcà & Ün7ÚÚÚPSS·“´©T*Ìš5 ¹¹¹\V‘ˆ’Æhß^/žàÅl±â|«e5ƒ8Öè¹N9œnWFñŽíï¦SÐb’¡Å$Cy³g«2Á¢´~,*¡t¦ +f¨¡OUC©TB.—ûõ– ² ^&S sîÜ9´´´øm[½z5 ý øøãã&ЈF½‡.ýÌ3Ï`Ó¦M8pàÞxã ÔÖÖÂb±`êÔ©X¿~=î¿ÿþaCg¢QF¸-swß}7ès8€]»v¡²²===p¹\ÈÌÌD^^JKK±qãFL™2`2™ðÉ'Ÿ ¼¼íííèèè@OO²³³1mÚ4Ìœ9_ýêW‘••åwŽgŸ}6hï¤çž{Ï=÷àÚk¯Å¿ýÛ¿úµ:t~ø!***ÐÓÓI’‘‘ à¶ÛnÃÒ¥KÃzßn¼ñF<ÿüó0™Lxã7°wï^\¾|ƒóçÏÇ=÷܃%K–­‡ÙlÆ{g²²2tvv¢££.— ƒééé˜3g,X€[o½uRü !"š bÆÈår¡¢¢Ï>û,L&ÓDW'$N‡Ÿýìg¸úê«ý>u%"JD‘övñ}ìr¹088ˆö3>:gîóNœï’ÁîŠNð.—Ôe¨5Û+\PÊÌ(žÒõsEÜ|•SÒS¡R© —_¹\ÔK&P “ì7R&»]½z5:::ðÇ?þÑoûÁƒa³Ù V«Ç©vÁÅ¢Þ;vì@ee%Þ~ûm¿í—.]Â¥K—°oß><ÿüóÈÏÏiÑÐÒÒ‚—^z eeeÃö]¾|—/_ÆñãDZpáBL™2¿üå/±cÇ8ŽaÇ777£¹¹‡ÂŽ;ððÃãþûïiý}uttàå—_Æ'Ÿ|2lŸçµüíoÃ-·Ü‚ïÿûHKK YÞ¾}ûpàÀ¼øâ‹èêêòn·Z­hkkÃþýûñÿð¸çž{†=wïÞ½xî¹ç†-½í©gGGª««QQQÛn»-òKDDaa׈1²Ùl(++‹û¸òIQYYl6ÛDW…ˆhÔB­6ìÏðQ»ÝŽ®îüïÑVüà/m¸õ¿¬xip¦]þY3±ì.§Ûdxi¿€/ýÖŠoomÇë[ÑÞÑ»Ýîø×#Ðë*™'ôu»Ýؽ{·ß¶¹sç"++ ÅÅÅÈÌÌôÛg³ÙpèСñ¬b@±ªwUUÕ°eèþï|ç;!{ïF£Œ±:wîî»ï¾€!Œ/Fƒ«®º  ×ë†0CY­Vüú׿ÆÞ½{£RבÔÔÔà¾ûî  µsçN|ï{߃Óé yœÓéÄ“O>éÂør»Ýøõ¯¶¶6¿íçÏŸÇO~ò“€!ÌP+W®ñ""=1c$Iz{{'ºa3IÛ '¢äNÐ(€±Ùl¨®oÃóï´à–WLøá{nì­•c0—`nG[äxî# ›~;€ÞiÁ…ú6X,–€Œï÷áNLœèNŸ>=ìftÍš5®ôºæšk†='V!šÈz·µµáµ×^›ð2‚±Ûíxúé§Ã z/^ìí-餹/½ôr¹J¥2è±J¥Ò;\0N§O?ý4ÌfsØÏ¹xñ"¶nÝÑy‚ûÏþ³ß¶;w{_EQÄÔ©SQPPNçݾbÅŠ1׈ˆ‚ãФ(:Iï¢E‹žžî}lµZqæÌX­VÈd2,[¶ )))Ër8¨®®ö6Юºê*ïØç@çmllD}}= °°Ó§O÷›Æh4âôéÓÞÇÉØ'¢É!Üy_<ßK’«ÕŠú¶>¼yÜŠ¿Vˆ°:sXf¯MÀk§dxë¬7ÏmÇ×W©0+߀””‚p™@Ã’’mî˜@Ã{<peN¡svìgTUUå÷øÜ¹sÃÊxóÍ7QPPà}Ü×ׇ .àꫯñõÑè1ˆ‰ââba``»wïFuuµß¼ååå˜>}:n¾ùfï8`·Ûýû÷ãĉ~ …ÊÊJdeeáÆoÄôéÓ½ÛÏœ9ƒO?ýÔïS–ÆÆFtwwcÍš5Þ ßü‚"¢Di\Êq®¾ *w`×Ewr\î]Þ­’áƒjnšÛޝ¯Ta~a†wiã¡L2Ïãr¹† /Ñét~7+W®„R©„Ýn÷n³Z­8t访þúñªªŸñ¨÷ã?îý~þüùøÖ·¾å·ßjµ¢©© 3gÎŒi£hϺuëð /ŒøÜŸýìgö¥§§cæÌ™°Ûíøýïï·¯¡¡«V­u]G¨ÓW¾ò<ùä“ÞÇ‹/Æ<à÷wÌétâØ±c#N,½eËo6þ|üð‡?ôÛùòe¿ÇB¼'Ÿ|k×®Åüùó1oÞ<°7 Ñ8HŽ–i’$ ;vìvô¨¯¯Çë¯¿Ž‡~r¹Ÿ|ò Ž=ðØ®®.l߾߸W@à IDATÆ7••…êêj|ðÁÀ®]» T*ùi%¼HV?®ÜävvõàÕ#fl=.– =`Fâp xÿ¼»/9±yA¾¹&¹Ù™Ã&õ©wL"‡1G64Ød2ùõ, æã?ž° &ÖõÞ°aƒßã `úôéÞÞ³õõõAC”h”1ZÕÕÕöÝqÇa?ßáp ¬¬ §NÂÅ‹ÑÑÑ£Ñp.¿†††1Õu$C{¤ÀM7Ýä÷xÖ¬Y())Aee¥ßö`íGììl¿ÞHž¹r|õööÂápx[°`Ž?îwL}}½ßÏuÚ´iؼy3îºë.®²IDCü #F£qÄ‹h__Ÿ·ËêÐ ðP.—Ë{AéX8{öl˜5cÇŽá _ø~ò“Ÿ Û÷íoï¿ÿ~LÏODÉ/ЊG¾ÁËÐïûúúð~yîß:€ß‘ÁæLÜ!\ƒN¯ž”áþ?YñÎáfôõõø>ùJä᪆÷„ëÓO?õëm2ž&¢Þ999öþë2Fât:Χ2tòâ`vî܉M›6á©§žÂ_þò;v ATˆåâN§3ày322†mËË˶-ÒÉ=½âByðÁýzWÒÔÔ„_þò—xúé§#:?E†ALŒh4š°–ˆÖjµ~ÿ†â™D-’cceÏž=())ÁáÇ'¬1KDÉ+T`0ô{‡ÃŠK-xr»Oþ¯ˆ¦¾Éwik5‰øÑ"žüŸT^jÃáqøV°Ç‰Àn·cß¾}£~¾g˜Ïx›¨zZT@¯×{#‘ÉdÛN---#>wçÎxî¹çüê)Š"®ºê*|éK_BVVVTë:’`¯¥³³sض¡s»ð›k0Z4 þøÇ?â›ßü¦ß¼0ìß¿L¿«DDÚäk­ŽFƒµk׆|ø°ßãÆÆF\¼xqØq³gÏŽi£ùÙÙÙö¿ñÆ#>÷¿ÿû¿‡m{ùå—ñ‡?üÏ>û,þñÿqÄ2µÃFÛkF„€=]vîÜé÷¸»»gΜv\qqñ¨Î;µZo}ë[ؾ};vî܉_ýêWøû¿ÿ{äææ;¶¢¢"&u ""ÎS«V­B~~>ÊËËQ[[ ·Û APXXˆeË–aΜ9Þc‹ŠŠðÐC¡¼¼UUUÞ^&YYYX²d -ZäýdE§Óᡇ±cÇpúôio7Þ””,Z´Ë–-CjjjÌ^Wyy9ôz=æÏŸ5kÖ`ß¾}Ÿƒâµ×^Cww7Š‹ÿ{÷Eþü3Û7½÷M£„ $†jè9zAŽ"žÜ) ‚x¢p¶CäDEAû¡ MA:H ôÐA:é•ôdK¶þþ;f“ÝÍ&ÙÝ$ð¼_¯¼’ùÎ3³IvæÙï÷ùFbÁ‚H$P©Tøþûïqúôi>>xñÅ1tèPƒí·oߎ={ö ¸¸Ï<ó æÏŸ???Œ?K–,A×®]T%Ÿ;w.Ž98wîÖ¯_´´4xzzbàÀ˜={¶ÍÎ!ĺ’„)xTˆ §ªkÁhuOþ0$K•Uq°ø p9»sú+àïW}c[_ݘÖT3Fÿ?¿¶‰']¾}ûö:ËNž<ÉÖÏ06óOzz:är¹ÁK׳WÜÆTTT`ÅŠèÙ³'ÊË˱nݺ:³;˜M¢4´¦ž—šºwï^gæ¢ .à7ÞÀôéÓ¸ÿ>Äb1¢££¡ÕjöšÑR«Õضm[½û–H$u–1¸(ÌÎÎÆíÛ·ñõ×_ÃÛÛ?üð^{í5lÙ²"‘AAAøøã! qìØ1,_¾‘‘‘lÞ¼ X¼x1<==qåÊvv)s***°dÉÌ™3ƒFaaaƒÇXBš¥IµZ?æâã#\Îy2‹ñ6•Àöë\Ü~$Ç¿ã3Ñ©mx<Þ‘Œ‘ËåHNN®³ü‡~0Y¤~Ô¨Q˜1c†Á2™L†³gÏ"..àp8ɹ\Ž1cÆ M›6øî»ïÀâõì·);vìÀŽ;L>?wîÜz ±6¤¦œ—ÚfÍš…„„Èd2ƒågÏž­ÓS'66_}õ8|}}‘——gðü²e˰aÔ——×iÏc…‡¯]»†±cÇÂÛÛÑÑÑFgf2åoû>\§VÌï¿ÿ^'Ù¤Ç0 /^l“B¹gϞŖ-[Ø„‹‹‹ ÜÝÝ‘ŸŸo´çMú@!¶Cý¸Iƒ( œ>}šµ¡{÷îP©T¸t黎F£Á¤I“,Z´ ðSRŽ7aaaÀ´iÓàççÇ"Öh4øé§Ÿðæ›o"""^^^2dD"Q½±B¥R¡W¯^pvvFXX˜M>Q"„XŸ©$Lí¡5r¹G/eàï[µ¸œCoaõ¹žÇÁ?vèpür&är¹ÉóZSK¦tâĉ:IvtìØÑä6ìPàšôÓ óù|vøoM¸rå ¢¢¢Øi"ËÊʰcǼ÷Þ{˜?>²³³Ù‹ÓÜÜ\Èd²F%PBBBƒ3fàÃ?¬3E#!¤e2—„Ñ×étJ¥8x1ÿÚÏE©¢e÷ÚhIJä ÞÜËÁ¾”\TVVM´¦dŒ±á=½zõª·±Úiúa>ðöÛo›LúŸ}ºÁ²øøøÕ1±F„BHS‚H *UÔ¿ôãAuµ~FǨ±ÜÔ•¢%Wv½Ê¤16àïï_g–€œœ( p¹\¶â¿)EEEì˜çàà`³ÓZK¥Räçç|||ê$Xär9rsssu$%%ÁËËË Tw§íܹ3’’’еkWäççcûöíèׯ‚ƒƒ±eËhµZÄÅÅ!''•••صk ÄÒwvqqA¿~ý°råJ¼÷Þ{ðòò•+W±XŒÎ;cß¾}èÓ§´Z->ûì3¶{vyy9’““ '''\¹rb±ØìTß„æQßP˜šI˜'‹ðÍz»²­ŽÁ7gxPk‹ñ÷þ \]]ëí Ó{ÆB!„´ftekýû÷¯“lÑÏš$‹MNS©—˜˜ÈΚ4bij]Uïß¿ÏΚÖ¤ôôtüòË/9Œ:Ž=ÊΖT[\\6oÞŒ7ÞxèС¾þúkäää ** «V­ÇCpp0þùÏbÆ øá‡УGôë×Ï ­·ß~_}õæÎ µZ¶mÛ"<<b±¯¼ò –/_Ž™3gÂßßC† a§¬¬¬¬DRR¾ÿþ{Èd2H$|ôÑGV9~BˆuX2;Pý7ý{JÖœ¥™‘¬mí9.<Š0±'—Mà·öÙ”!„BZ JÄ‹}ñÅ&Ÿ›8q"›`Z»v­Ùv¦L™‚)S¦˜|ÞÙÙ‹/6úœ»»;þûßÿ,›:u*  Îs„–ÍÔÕr¹‡¯à“D.´:JX› >MäÂI‘Ý8ppp¨wjkB!„bT‰ËNZò „b/¦þÖLÂ(•Jœ¾™‡8PSa^›Ñèüç('o䡪ªÊä Jzô>F!„b”ˆ±±û÷ïãçŸfë´TVVbãÆ¸qãF‹Ú‚‚ìÞ½.\`—ýüóÏ8sæ ”J¥Áº•••8vìöîÝË.;|ø0Ž9ÂÖ—!„–Ä’â¼Z­7äbÑ~2½EÙšBÍÁ¿qp+5Z­¶UOkM!„ÒZÐU® 8q;wîDVV–ÁÅk~~>öíÛ‡}ûö±Ëîß¿ÿýï¸}û6;•3P=åå‰'ðóÏ?³É˜ÒÒRlܸ.\0˜êZ©TâÒ¥Kظq# íp„„Ò8¦nøsóò±,Aƒ²*z{²—RÖ"'·ºð{}ÉB!„Ò4T#ÆF¤R)Ξ=kv›7o¢{÷îðõõEbb¢A¦¶‚‚\¿~]»vÅÙ³g!•JM®«P(pêÔ)Œ;¶ÑñBˆ5Yr3_ZZŠï“帚GoMöv#Ÿ‹ gxmH);­µ)T;¦åh×®]½×öhƒB! CW»6¢T*-ºñP(ª§™®~ý6–¬K!ÍÍ’!I …ÇocÛµÖ5C—Ć; Kˆ~®Õo©yej\LSàBª ÓùõççËtô-ÁÈnBˆÅbƒâ½4‹!„BˆõP"ÆFÜÝÝ‚ôôt“ëxzz"((ƒS§N™\W  S§N€¨¨(ܽ{×l¢§K—.ŒœBlÇT]˜;iùøø§ÕÌÄã2˜ÞÛ ¯ò`0µå–ª±æx16.…ZÓò‡÷TϤĠÏ#tn‡c6C!„B‡áÛÐøñã Ïð"atèГ'O—[ýéoŸ>}пˆÅâ:íbòäÉlwñððpŒ7îîîuÖuuuÅèѣѾ}{!„4Œ¹„±þ¹ââb¬:¡Fy+© ×Þ‡Þ ÁGã}L&aÀ߇ÆûàØ¿B1*ÚÙŽ6^©‚ƒoNªQRRÀ²×B!„4 õˆ±!¡PˆaÆ¡C‡Ø»w/¤R)ø|>FމöíÛ|²È0 zöì‰víÚaß¾}ì,K½{÷F¯^½ê$sÚ·o‰D‚„„üñǪÇy:ŽŽŽö;HB±±â¯UUU8u·§ÒùÍ–żxo¬7†ttjðvkf`Ê]>ØU€»yUõoÔŒSyHºUŽ‘Ý  €zÅB!„X%bl¨¬¬ ûöíCff&»L¥Ra×®]ðññÁÈ‘#áããÃ.?ränÞ¼iP´÷ôéÓ¸ví† ‚ˆˆvù¹sçpúôiƒi­ïÝ»‡´´4ôèѽ{÷¦‹eBH³ª™p1V'F§Ó!¯ _žÐ¡%÷­ps0g°'þÞÏ^ãÿ¯ê{Òl=_†O÷¢Xª±b”Öµ:Y‡n!…€Éú0”˜!„Bi¸ÖѼÒétرc‡A¦¦‚‚lÛ¶M¤;v ׯ_7:sRee%~ÿýwäåånܸÄÄDƒ$ŒžJ¥Brr2._¾lÅ£y²­Y³Æ*ëØ:Bž52ø¿s äT´ÌÏ8 ð|7$- ëƒ<š”„ÑãqLí冤wÂðR?wp[è»pv?_¨Bee%»Œ†"B!„XG ½lýŠ‹‹QXXhv©TЬ¬,À;wÌ®«Õjq÷î]‹Ö€Û·o[)±N‡ 6`÷îÝÍŠQMO&“áÇ„L&³rd¤52Ö¦æwFƒ;™%ØÚBgIêÙÆû„âË)þðr¶~¢ÈÍ‹ÆùàÈ[aèß¡e'Ý|…‹;ÅÐh4F_C=JÐB!„4 %blÄÑѱN]—Ú†a 𺺺ÖÛ¦¾8¯±"½¦Ö%-Gff&P\\Ü"§oL|§OŸf‹zŠÅb 0ÀhÁiBj«¨¨ÀÿWA©iYoCA|¬™€ís$x&PØàí§­ÍÂÁë•õ¯øX;_~š„53äѲêäTiü”¢FEEEs‡bÔÅ‹1oÞ< 6 ñññ˜3gòòòž={bÿþýÍbƒµ†Ø[JŒµã0—J¥BÏž=ë|}ûí·v?žæ8µ÷™••…Q£FáСCVißÚíBÈÓ e]?AD"âããÍŽïÝ»7<<<C‡…H$2¹nxx8žyæ@¯^½àååer]777ÄÅÅ52rb+÷îÝCûö팇6w8u4&¾üü|vˆÃ0 £zÄ¢Þ0iye8ö°å I 8X0Ô ÇßkÒ GI·¥xùÇlLú6äX^”wT´3N¼†ÇûÀIØrÞšßãâanÔju‹ê³gÏÌ;3fÌÀ”)SàááOOO»ÆÑTÿùϰcÇŽÓŽ-µ„ûöí‹?üý2dHƒ¶o Ç` ÞÞޞܡöyhj{„ò4j9WÁO ¨¨(àÂ… ¸uëT*8"""еkW²ëúùùáå—_FJJ ®]»©T H$èÚµ«Á,Kb±3fÌÀõë×qéÒ%v”»»;bbb @`“c*((@rr2d2D"úõëÇÞ´iÚµk‡Û·o£W¯^ˆˆˆ@nn.Nž< •JäççcæÌ™mêt:œ:u ©©©àp8 Bÿþý!“ɰ}ûv̘1PXXˆãÇcâĉ`²m©TŠ£G¢¤¤‘‘‘èÕ«—ÉõÌm§Óépøðaqqqð÷÷7{mjµ™™™èß¿?†Áõë×ÙÄš¹öÍÅTXXˆ“'OB&“A,cèС`Æä93k}ñÛ×;w››‹;w",, ÇÇš5kðÊ+¯4þŒ<***°é¼*mÃ{œXÃ#£œ±xŒ7‚Ü­×#åÌ}†ž†çºº`ñx9Õ?‹Ïe0+Î#£ñå¡"l9[ m3úQë8øå¢m¤õÜ´‡òòr¬Zµ ýû÷ÇòåË›;œ&9{ö,¸Ü¦ϳV;¶Ôb ÇСC –egg[¼}K8kðññÁ?þØèíkŸ‡¦¶G!O#JÄØ˜J¥‚J¥2øQ¿¬6FµZmP°·æö5{hµZ¨T*¨Õj³Û[“R©Äþýû1zôhxzz"-- À´iÓÀårQQQWWWLŸ>\.UUU8pàÆŽ OOOddd 55µN»™™™ÈÏÏÇ´iÓÀ0ŒÁ1™b®mý( lß¾aaaðóó«cMæ¶€.]ºÀËË ™™™8xð ¦M›†ÜÜ\‹bOKKC`` x<;í¸\.7Æc¬}S1yzzbÿþý1b¼¼¼ P(  Í)2wžÍŧR©Œî«K—.HOOGïÞ½áëë[ïkFžæzFè{Ãd”ãðýæ†Ó9H„Çû {˜m†ÓiuÀŽ”r¾YÙ Y—|]xX>ÑSzºâýß ’Ö¼CÜåcz~::9Ëåšìõf¯”nÞ¼‰ÊÊJL˜0Áìz»wïÆúõë!•JñÒK/aâĉxøð!V¬X»wï‚Ãá W¯^xçwPTT„ &à…^À©S§PQQY³fá…^$&&âÛo¿EEEž}öY?~»v킟Ÿ’’’°víZäää 22ï¼óüüü°bÅ $%%A­V£}ûöøæ›o ÎÏüùóQTT„ßÿ¿ÿþ»Á°Ž†Ä®¿f;5“fæŽyâĉ˜:u*Ž9˜={6FŒììl“ÏÕ6kÖ,”——³=$–-[†óçÏã·ß~cר±ºººâÊ•+X½z5>|ˆ€€¼úê«èÓ§Aû¦âoŒÔÔT$$$°kïËÜþŒçÊÊJ“çÉ’¸år9fΜ .—‹õë׳×¶~Ͳ³³1a¼ûî»3f ®^½ŠÕ«WãÁƒH$øðáÓétj¶gêuÕïרߙJ¥ª÷o†Bž$-§ÿóèâŋشinݺÅÞôêt:Ü¿[·nEbb"»nVV~øá\¸pÁàf://ûöíÃÖ­[Ù6¤R)~üñG?~¥¥¥ìºååå8qâ6lØ€²²2«O^^ÜÜÜØ®ß¡¡¡prrBQQ»Ndd$›àÈËË3è*h´§Ž››*++qâÄ dddXôi“¹¶9Ôj5RRRpæÌÈd2¶‡Qíkªo;ýp0‰D777X{BBîÝ»‡M›6aË–-P©Tu†ÿkßTLùùùpttd·‰Dõ^¬˜‹Õ\|Ù!€ñ!,R©[/)QÕŒµa|':öαY¦¦r¹Ÿì}„øÏÒð‡åõc¢$"ü:/kf Њ½uªJÃ`Û%¥A!nc¯­½è‹Ü×W íêÕ«˜2e ¼¼¼°råJ”––ÂÃÃ}úôÁâÅ‹1eÊ>|Û·og·Ùºu+¦L™???¬Zµ ÅÅÅÈÎÎÆ¿ÿýo¸¹¹áÕW_ÅñãÇÙõïÞ½‹wÞy±±±øôÓOQ^^ŽeË–!!!»wïÆ+¯¼‚åË—cÒ¤IuþoΛ7‚µk×ÂÉÉ©Q±›k€ÙcÖjµØ´i^zé%¸¹¹aéÒ¥HOO¯÷¹š†ެ¬,¤§§C«Õ"99Æ 38^c1`þüùàr¹˜7o†Á;#œœ‹ão¨“'ObÉ’%ìWqqquzžM§úâÖétXºt)Š‹‹ñé§Ÿ|0cë׬¦ÂÂBÌŸ?Z­óçÏG||<üýýýûfÉëjìïÌ’¿By’P"ÆF Í^¤ž;wŽV”`t:j½ŒŒ ܼy@uÔš ˜Ú***œœÜÈÈMÓh4u)J¥Nõ¯Qí7L­VkÑ)L›6 AAA¸uë¶oßΞ7S½{̵]PP€#GŽ@"‘ oß¾ðöö6¨cbJC¶S«Õàp8fc׫ªª‚@ À?þñLŸ>Ó§OÇàÁƒñàÁvS훊I©Tš,Škêœ™Šµ¾øÌí‹Kéÿ.JË+pàNótíçq¼ÔÏI‹Â0µ—8v¾ÆøH‰¿ý)ßeânžeõc¦º~̱·C±`¨„V˜B»1ößᢴ¼ºhosÏ’¤›™™iv½%K–`„ ˜:u*4 rrràææ///:t'Ož„N§3hçÝwßÅsÏ=‡iÓ¦A«Õ";;ç΃J¥Â[o½…Ñ£GôjHIIV«Å–-[ðïÿ™™™ÈÊÊ‚··7à·ß~Ã¥K—о}û:ñ…‡‡ÃÓÓÑÑÑˆŠŠ2HŽ7$v:—R IDATsí¨÷˜—.]ŠÑ£GãÍ7ß„V«EJJŠEÏéÅÇǃÇãáôéÓ¸yó&Š‹‹ë ÿ1ã™3g —˱páB<÷Üs˜?>”Je}ÔC¼øâ‹8{ö,ûUsˆx}û3wž§úâÞ¶mŽ=Š… "((¨AÇÜÔ׬¦Ó§OC&“áÍ7ßĘ1c0}útˆD¢Fÿ¾Yòºû;³äo†Bž$”ˆ±©TjÑ›òòrƒïÖ^ךüüü——‡üü|@NN´Z-[pØÔúª?uÑ'64 ._¾Œªª*(•JTUU¡M›64hJKKQUUÅ‹ÉÍÍPÝ F?{‡¹¶‹‹‹!‰àíí Fƒ¼¼<³½l¸\.ÔjµÙít:{ÜÉdlRÄXì5ïÁƒ6ˆ!44¹¹¹P(fÛ7“rssÙOóôÃ×Ì3S±ÖŸ©}Õ½cLͨ¢ÿ„T/??ß ùTXXhÑTì¤õ0W¤¨NPŸ~ B¹Òþ‰˜øgœ¸( Œó“¨yßúNÞ•aèçéø`W*– %up0¨'N¼Žç»¹Ø8º*”\œ¾¯`ÿgÍW´·cÇŽøé§ŸŒóÕÓH / ªÓépôèQ¼ÿþû:t(V¯^mr[vý>ôïé|þŸ½“ô3®_¿DRRöìÙƒnݺáçŸF÷îÝqìØ1¼ð ªEÒ”Øk«o;}/\ýqÕüÃÜsznnnèÙ³'NŸ>'N ""aaaõÆUUUŒÔŸWý„µ÷ÑØãn¬ÆìÏØyª¯öíÛƒÃáô°²4†¦¾f5é{ºi4šÅ`Š¥¯+`øwÖÔ¿Bim¨FŒxxxÀ××—½¹6ÆÙÙ‰@õ…åÅ‹M®ËçóÑ¡CvÝû÷ï›ÝÇŽµyb±ñññHLL„F£““FŒÁ^0[ðàÁ8zô(8¼¼¼Ø ƒªª*\½zAAAÐjµ8wî¤R)4 bccÙ7îâСC‹Åpwwg/J͵ݦMdffâ矆X,†¿¿¿ÙDLçÎñ믿">>Þäv\..\@yy9„B!FŒ‡üü|£±Ëd2öøîÝ»‡¨¨(ƒ} …BøûûãáÃ‡èØ±£ÉöM‹““ €C‡ÏçC,càÀppp0yÎJJJŒÆjI|¦öƒ“'Oâ?þÀ¨Q£ ÚHMMEUUBBBT÷ê*((@›6mT'òîß¿oP0™<™ô7ç2™ ûnT°_+‰ÿ䋸ö-k6µF‡õ'J°ûR9ÞáÉ=\-ê¡àÆÃ—Süñ\7¼½-™Å¦Ö¶ÿ¦ ñ« µÛ«Œ1ÞÞÞ˜5k¾ûî;Ìœ9Æ ŸÏÇÇñöÛo›ÝV?<¢°°Ð`x°9]»vÃ0X±bžþy|ôÑGìs={ö„““>ûì3¼þúëÉdppp€››RRRлwop¹\lܸÅÅÅuz`¸ººâúõë¸zõj½ïÛæb¯ÝNÍdQ}ÇüñǃËåb÷îÝèÞ½;{Snì9‘H‡ƒ;wî ..ÎÎÎ>|8Þÿ}¤¦¦bêÔ©Fã¯cll,¸\.V¬XqãÆaïÞ½prrBll¬EÇíèèhGíÇÎΖÍ~V{»†œgsçP_§ÅÔy‰‰§§'6n܈_ýÏ=÷\½Çln yÍjêÚµ+8V®\‰©S§B.—cÈ!:̾®æêØ¥¦¦Zô7C!O JÄØÃ0xþùçqàÀ¤¦¦Öù”000Çg/–  z\xíž4nnn:t(Ûm322r¹ÉÉÉuÞÔD"zöì‰èèh›—D"a‹Öfl¶œöF\*•²C± fO3fŒÑ6Ûµk‡víÚ}ÎTÛ|>ñññÇØ«W/v&"SÛýãÿ0ºÜ×××hì5oìØ±F·­¹©öÍK›6mؤFM¦Î™©X-‰ÏÔ¾üüüØY¬Ãó[ûb¯{÷¢ê$€È“K«ÕâQ‰—òì7SRÏ6X?+.â–Ûù³°Rƒ··åaÓ©|0Î=ÚX–¤Škïˆo†`ÖúlœhŸb¾)¹B”Háææf2o/3gÎD@@¶nÝŠüB¡Ï<óŒÉzz#GŽÄÍ›7ñÝwß¡M›6³Ã™Ò¶m[¼õÖ[ذaÖ¯_˜˜\¾|@õ‡.Ÿþ9V¯^ ÀÇÇ£GFÛ¶m‘˜˜ˆuëÖÏçãÅ_DçÎë´=gÎ|öÙgxóÍ7±jÕ*¶‡MCc¯ÝNÍçê;æ°°0|ýõ×pvvƲeËàççÇöD0öLš4 ûöíCPP&Nœˆ¸¸8ðx<š|Ï2ãÒ¥Kñý÷ßãË/¿DÛ¶mñå—_Öéek*~77·:qÔ~l‰Úí4ä<ë_/cçÉ’ßµ—_~çÏŸÇÊ•+…¶mÛÚå5ëÝ»7ÛV»víðÞ{ïaÆ øøãÑ¡CtîܹQç¨îQkêu5×Ã%??ߢ¿ByR4ÇÇY–ìÓÔ:Œ‘ç85žÓ?®ù3ïñ—€¨¢¢â–µºOWVVbÕªUUø£££ ŠJ¥Rܸqr¹<ÑÑÑ&?©Q*•¸sç[722ÒäŒ4éééÈÈÈ!,,Ì ÷GII ®^½Ê>2d^ýõ:ÅÕl¥²²"‘<.\€N§«óiWKl›´n%%%ð÷÷oî0ž*æ†%ét:H¥RlHÌÇêÓöÉÿGñë¼`8 í›0,hÚp»ÑÏ:ãÝÑ–O¥]©ÐbÜW¸caÍ™¦z£ 3øÃÁÁíSû{ퟟ4+W®Ä¶mÛ””dÐó¤µÑÏ`³téR 2ÄâçL™:u*<<<ì2|¨¥hÌy²Õþì !„X“@ ˆ  P@ýøK?†[WëgÔxŒËMÝä[róo×"xÔ#Æj&>jS«Õf‡ ÕvëÖ-ܺuË¢u³²²ØÙ$ZŠ´´4ܼy:~~~èÛ·o«h›búdŒB¡ÀÑ;*Øãm‡Ça°jŠ¿Ý“0Ö°çJŽÜ¬Ä?z`Î ˆæÁIÄÁWÓü1ò‹t¨µ¶¿~H¸«Æ =äppphÖáIö¶k×.p8Èd2SŠ}W+0¨'^ìã§e'8 ð\W,ã¯z’GNfŽÝšRËÄ(­TÀÃãéªC!„b-tE!Ījö T©T¸™«†FgŸ„‡¹½èÃ*•iðþoˆÿ4 ÇoIíWcôn뀃o†âË)þõ&aû}ÓèÜÊU Åm©½A !„BZ"JÄBi´š7àÆnÆÕj5þÈVØ3$‹Ý/PâÅuY˜µ>éE-§¾W€+§øcë«’;ûÓ­Ôjuåõý>B!„šD!Äô7á*•  kµoYŽÜ¬ÄñÛRÌèㆅüì6ħ6ÿèW{@ÈkÙC¦êØD Õ‰!„BiJÄB±Fƒìò–ßùR­Ñaý‰ì¹RC=ñמn°Wù†FF9cÉoºóí³Ó&Ê)‡Ñ1„B!¤~-ÿê˜BH«¤ÓU÷š(R´Žä”«±h{>F}™Ž ©r›ï/J"¯ó‚±fF@«IÂÀ#9††B!„4õˆ!„b:J•åªÖ“`лž¥À„¯302Ê‹Çx#ÈÊI_æÛ¹ç5•*¨RQB!„Æ D !„«©ÙCB«Õ¢°R­fL²6Ø{µGoIñÊ@¼2È"~ÓŽ…Ïeðb7,î'aë픪Õ1(‘j Õ‚Ë­žÑ‰jÅB!„X†1„BlB«ÕâQ¹@ëëS“\©Å‡ ±å\)Þá纺 1ù†øgœðáxHŽBºQR9 ™z1¶JÔ?~<¨³<,, ƒÆ®]»‰ˆˆæ*fI „P(ÄÀëùäìÞ½Û`=üöÛo&Û©¨¨À7ß|ƒË—/£  ÁÁÁ˜5kú÷ïo"„B£DŒ¥¦g`ÞŽ*¤I.S„L'^˜O××K¦f²†ÃÁ¡\ÜÞú+ÆV!,$ØfÇD!@õM¶¹:!nb**þ¤òpä6kÑøÈÈHtïÞÝ`Ycã¹xñ"ÊËË&Dl)<<gΜF£1^¬Ñh™™‰#FØlß!!!ðòò²YûMqûöm¬Zµ 999ÈÏÏoÔzr¹3gÎÄŒ3Øeæƒeee˜5kºwïŽ÷ßŽŽŽ¸qã<<<š~@„BH-”ˆ±N‡i˜½]ƒGUN`8†Éc‰—/>b$bx9óàçRýÒä•«Q$Uãr¦%ªz“5ZoÌÞQˆ5ãÓÐ&,„ºBš Ã0ðt¦bâOªæNÄp¹\‚fÛ¿5„„„ 99999H$ìòììlˆD"x{{Ûlßݺu³YÛMµgÏ 4ãÆÃ‚ µžL&ƒ««+Äb±Eûܼy3:vìˆE‹±ËBBBw„BH=(c#Yxm—…*1Löjñqæcfo7ÄG:"ÜÛüåÃGJ$Ü‘âçJQ$Õ8¢A¶\X݆pg8 8®b.Þêco†àýÜëMÂ@¸·³ûº#a^ ö„‹˜S«í?.xãÃC(((°É1¦¤¤ _¿~øàƒ¬ÒÞìÙ³±oß>«´ÕöKÈÓÂÉA w¼¹Ã VæÎ—ÃÉѲž¶¢Õj¡V« ¾Œ •ãp8pqqA||<&L˜€öíÛ#)) eee€¨¨(ÄÄÄ M›6˜5kz÷îÍn{úôitíÚ&L€¯¯/8¥RYo›µã>>8zô(û|K#—ËñÙgŸ¡ÿþ7n–/_Ž’’£ë* A(bÑ¢Eì9زe‹£&„ò´ DŒ•I¥Rì¼$ÅåB¡Aâ…yüÅa€.!"ìŒös‡˜ßð—@,à`vwüö²1‘á~˜?÷uKå‰_/•B*•Zý8=ŠŽ;âìÙ³P*•VoŸÒ:Õî Áçóá%ªj¦hˆ­ø:(ÙÞzöî óÇ`ãÆ_yyyF×íØ±#ÜÝÝáììŒèèh8;;ãÑ£Gõî#..~~~pttD= ‰Ø"Á–¶yæÌ(•Jôë×Ïè>BBB T*Ù'¹¹¹lý•J…;wî gÏž‹ÅpttD·nÝ––fÐNDD"##ááá™L­V ‰D¡Pwww“C4 ®_¿Ž>}úÀÃÃÎÎÎ0`”J%ÒÓÓT÷ÞéÛ·/||| ‹ ¹\n4ùÔÌŸ?[·nÅž={°dÉܼyo½õ–ÑÄQaa!૯¾Âøñã±k×.¼ñÆX»v-Ž?nïÐ !„<hh’ét:dæ>ÂÆkB0«òÖž~zHG|9ÑB^Ós`n|løkÞú½‰÷¥FêÏ0Øt_Œ~m Ù6ÔjÉ*• 'NœÀ矎… âüùóèÛ·¯UÚ&„>>ÝÜÜàïï;w"880CEE´Z­Añ^”––œ=gggðx¼:q´;wfîÖ­–/_Ž &àÞ½{uf²rqqa×ëÑ£°=iŽ=j÷"΄Bž|”ˆ±¢’’¬<ÍŠá€12ýtŸ6X5É|®õ>5ñ9øbœ/æìÌÅÙŒêîÿ³* Eøêl9–y–X­òÿùóçáââÂŽ£OJJ2HÄÌž=}ûöÅùóçqÿþ}H$,\¸7nÜÀÞ½{‘››‹.]ºà_ÿúÜÜÜØíN:…Í›7£¨¨‘‘‘X°`;f^¥Raݺu8~ü8ªªª‡¹sç²EøfϞɓ'ãÀ¸qãþóŸÿ [·nÐjµØ¼y38€ÒÒRtêÔ óçϷɘvBˆ!†aÀãñ qÝÜÑk’¸Wߨ·´z0ƨÕjüþûï E—.]àää„={ö4jHþwÚÒ6QVV†›7oš-ކ””ôèÑiii6lûœ¾ ñøñã! ëˆ#››‹»wï"!!þþþˆ¯³®F£N§ƒN§3xM¹\®Ù„[kxýõáììŒüü|£‰>ŸgŸ}Ö`yhh(îܹcÏ0 !„<%hh’•hµZdVâb!¿ºV ógM†Ã À/&øZ5 £Çç2X1ÆnüZà0à¦ÜÙ…VÇÀ~:‡S§N|"VVV†~øsçÎÅ–-[ ‘HðòË/#++ ÿùϰnÝ:äää`íÚµì6ÙÙÙHNNÆÛo¿üxíµ× P(TwÎÍÍÅÚµk±~ýzäääà»ï¾3ˆëƒ>@ß¾}±zõjtêÔ ðã?"11‘ݯ@ À믿Þb?Á#äIÃårêE9ÿ'M¨'¯Ù{ÄXêÑ£GP(ˆ…»»;ø|>Š‹‹ë Û­ý)—Ëqûöí:m¹»»[ܦ““ „«W¯²C|Œ \.Çü>ŸOOOƒ6ø|¾ÙíÍñ÷÷Gÿþý1zôh¤§§®¬ïRsh—N§Caa!ÜÝݵߖ¦  &gBêÓ§Ž;f°,-- ÁÁÁöBÈS†1VR^^Ž—9Ðc ÑÐýp„'ÜlwÑê"âbÑ÷êäS«€/Ÿ‹¯jQ^Þô± …§OŸÆ€Ý»w‡J¥Â¥K—Øu\]]ñÖ[o¡C‡pwwÇäÉ“/¾ø"‚‚‚ ‘H0|øp\¿~ÝF£Ñ`Ò¤IˆŠŠ‚¿¿?-Z†a˜˜©TŠ={öàõ×_gǸÿýïÇÉ“' b5jÆŽ‹¶mÛB$A¥RaëÖ­X¸p!ÂÃÀŋC&“áÔ©SM>„ÓôŸ”óù|< ö)èY·Tk͘ìB³1wìÖÄ…ül"¦%öЉD¨¨¨ˆÅb(•Jܺu UUUHMMv6 pttDnn.*++ÙáE<=BNNªªªpéÒ%¨T*„……YÔ¦^`` ºv튤¤$“ïÃ|>‰gΜ1–TŽŠŠÂùóç‘ ­V ©TÊÖ51¥ªª wïÞ…T*…Z­Fnn.x<žÑ™„ø|>"""pêÔ)ÁåË—QXXˆëׯãwÞA\\›ˆ©ÝΔ)S°wï^lÛ¶ HLLÄÞ½{1qâD›!„§Sëø8«Éd¸˜Ïe!Ø!IÝ‚Eè×¾îř޵´2,ÜxÅ*ŒzÖ Ç·‡Ÿ»åS.êõo댘Àr\É­ªÀµ2d2™ÁP ÆHNN†H$‚D"a{«têÔ ‰‰‰ì¸jSšêgiÉdì'k¡¡¡ËÿœI%88Ø`ªN>Ÿ¨¨(¤§§#,, Z­¯¾ú*{Á¯V«!“É b{æ™g çää@­V£}ûöì2‘H„Ž;"##£)§òXÍi«MaÍ0 ü}< .@¦ÜÕæñH¦>ü-ÖÑUš9vk —#ÀÇ×h¦æ²æLÐtîÜÉÉÉ())A||‹‚‚$$$`̘1F{…‡‡×©£‡3gΠ²²’-–[³¦KmJ¥©©©¸pá”J%\]]1dÈ“µjzõê…óçÏ#!!Z­>|¸Éö›ƒV«Ennnz8µét:|üñÇ(((€ˆY³f™l'** Ÿ~ú)Ö­[‡ï¾û¡¡¡X¶lÚ´icÓc"„òt¢DŒ(•Jü‘§† Bp8`‹Ãè¯A_‹3Ÿüx{ëä9ú@àÄà`¾>NÁÌÞ>xuD8E {‰^uÅ?÷<ªƒV(ÄíG2x{«êÌtÑÇŽCII †Zç¹… ½À«ïbÝ>Ÿ>Ÿ'''À?üÀvŸ¶„R©„V«…F£1H vÌ=!Äúj'dÄb1"<äÈ̶}"&³XµFž‘a ÝÃĘ3ØkŽë~w› IDATCk¯î#v¢ÒèYlŸ!—<ppp0Xfï¤K}ÅSñ /°£¢¢er}g´vJ``  dt›úÚ7nœÁã¿üå/fc7š„Ñëܹ³AZsûª{ç{¯6µ —ËE¯^½Ð«W/‹÷1cÆ “í[ËêÕ«ÙŸ9þ÷¿ÿÕ»ž»»;Þ|óM“mšj§gÏž€&„Bš‚†&Y\.ÇчºÃþœ²:Èn¡Nf·ÏaÁp«·á …à`ãM%~x[NdBÓ€;†n!Npá±C¢ØáIàÐM^$ QYY‰sçÎaݺu8qâûµgÏp¹\\¹r¥Ñm—––âáÇìcN‡[·n!,, ¾¾¾ppp@rrrƒÚ Ã0¸ví»L«ÕâöíÛf/v !ÖÃ0 „B!ºÙçí¦J­CJšÜäó‹FzcÏ!è*¶K<örþ¡Jµ}²K]%‚9$‰B!¤5 DŒ(•JÜ.áüY$WŸa€~aõ÷¼`ø|¶°®þKèâµ_–&!þÃÓ8zµÀâxzò bÐÇu¿¢iÓL&%%ÁËË«Îl®®®èܹ3’’’Ýv~~>¶oߎ«W¯¢¤¤kÖ¬V«E\\x<¦L™‚ï¾û)))Ðh4(((¨w&Œ1_|ñnß¾’’|õÕWpwwG÷îÝÙØsssë § „4]Í:1ÝBÅà1»ì÷—sefŸ’ˆðë¼`¬žæ·'£cèÖóæÙZø º†9²=+)C!„Òp”ˆ±­V‹ M^(ÌŸ •^!õ×z©™€1èÉÂÄ®(óòÜí阱*÷r*ëm¯G  ÃÔI I4šÆß=zÔdwð¸¸8œ<íŠì¶ï ©r û<'ïJ-Þ¦G1ö-Å'ùÁËÉôÿÙævò®Ã?OÇ…TÓ…‰­­ƒsÚ…íC!„B,G‰+árk%T˜êJqeýÅqkÖ5žD1LÖt3=sQ…Ò°î ógB‡BlÁذ”Ú7ê...èbŸÞzYÅ*Lù. ³Ög#½È²bå˜ÒÓɋñ`¨¼–ó¿3§Tù›s1å»,d•Øgºj½þ!J¸¸¾÷а$B!„†£DŒ•ð8œê¤ Ssˆð¨Ü|ÁHF ë›~šá<.ð|GgÌëãm²½‚redP„ uˆ!„4ý4Öƒ;¹Â‘kßd ¹Y‰ËSñÁ®T*,+*î(ä`þPO$¼ŠQÑÎ6ŽÐ<™R‹/¡ß²‡Ø‘bŸÂ¼59p•ðŒ+„B!%Z!„Bšˆ1V‡ñ™RÕßmÜ\âåÏ^- z;àÿÆ`AOOˆø¦_º´B¹Ñ!M:eãf4"„¦¨yã" B¬WA³Ä¡Öè°þD ú/OÅÏgJ¡±ð_b˜·kf`Ë+DøÙ·~ŒNì½ZAÿMÇ Q¥nžŒz¯|„H‚ØÇ”Œ!„BiÜSˆµÃýq`’o÷ôlT~I΂Ôݹºg óç$¨Ì—¡½·Aý5f¬mÍš5vß§-Øã8ž”sEH}<==1áø- WLMYÅ*¼ò¿ŒY•ŽËé ‹·ÖÙ ?ͪÅZîå+1mmVõ𨖄p4x¾³žžžÍŠQ‘‘‘xñÅ1yòdtîÜ/^ÄÕ«W›ÜîÅ‹qüøq+D„‡‡###áï¹F£Aff&¬²cBBBàååe³öm)!!)))˜3g6oÞŒ)S¦`åÊ•8vìXs‡öÿìÝwxœÕ™øýïôõÞe«X’›$l¹Ê½‚ 6eé&Æ %„¡Ȇ¼NB( $¡˜„5ͲÓ±ÙÆ’6î–dIVïÒôöþ!4H²Ê¨X’Íý¹®¹4óÔsÎ<šrÏ9÷B!„b€V«el´K½ÿŽÃ“” ÒªøûžZ *Œç­ ùåF^>X‹Z¯:gö%n*Î41i¤¦_“ÉÄ믿ŽÉdÀ’÷_Oår»Ý¼öÚk¼÷Þ{ƒ\2!~˜º¢P´äÂR©TÌÊJcND×Aê¡´ÿŒ…+ž?Ã/ß.£ºÉ1àǯ79y|c%‹þTÀÖcç。?æE3cb*•Êó¼ÁðIÒ«R©ÐjµøøøššJVV‡ôrtgäÈ‘8NJKKÛ-?{ö,z½žðððóvîI“&{ÞŽ>-\¸§Ÿ~š¬¬,¢££¹êª«X°`Û·oê¢ !„BÆ© •JEJ\Áû07¡ ÔàlíšÿÝgSML·¾v„ÿ¹+ƒð€þ´¶ÉÆ]oÁgTTË(χdP+Ôž¨$BÛLÚÈxTª¾Ïôa0˜;w.ƒa€J>0z*Wqq1111”••a6›‡]ù…ø!R(„††²jŠŽýŸ©± Lž•ärÃÿå5òñ¡fî˜Â] BЪûpp8Ýü÷Îzžù¤šF³—óg0­‘›¦ ¹`òÀDEEa±X°Ûíh4Ün7ß|ó 'NœÀl6Ivv6þþ-ÃÎ6nÜHFF'Nœ ²²’ PSSÃþýû(((`ôèÑL›6={öPTT„ÉdÂ××— &0jÔ¨ˤÓ鈥°°øøxÏò‚‚‚v½a\.yyyäççãp8HHH`êÔ©h4š.ËKII yyyÔ××ãããCbb"“'OöìÓv¸”7í‘@II 555øûû“MTTÔ<;½Ó:®­ÐÐPª««½,B!Äù =bHpp0cëi¨´ t·›©u¨’cD«þ~ÒÚ›£¢ÞÂê—âLŠ@©jõ}oÍJÁ·L‰µÔ¯s) ‡Ý‡òžÊuòäIRSS1bùùùƒ\:!~˜zêÓú÷’Œñ\“x–áõªÒžÑÚ’?f០ùà`SŸ³ý„‰KŸ9Ãoß­ÖApUâY23ÆwûÜy¶&ï &“ Oðbß¾}°`Á®¼òJT*}ô.×÷mÿÅ_0räH–/_Ndd$L˜0ääd~üã“R©$ €E‹qõÕW“ššÊÖ­[ihhðª\­Ã“Zs'¹\.ŠŠŠHJJòl³sçNšššX¹r%W^y%äææ¶;NDzZ­V>ÿüsÒÒÒ¸á†X´h ]–£§ö°Z­äåå1eÊ®½öZ"""زeK»öJd̘1C] !„b@H˜b0˜“ª%§ÜFÝ™f‚Rh´»[¾\|÷U­RaÁ5=Àÿ#…™cû7v{Û·Õ<²ñ>ã£Q«Ußgçý.Q¯¿ZÁ·[Nࣴ³$3p@z‚¼øâ‹ÜyçTVV²cÇL&z½žÙ³gqÎ>n·›Ï>ûŒªª*4 ³fÍ"::£ÑÈ–-[¨««Ãét2f̦OŸŽÛí&''‡‚‚”J%qqqÌ™3§ËåËÕ–Ãá ¸¸˜9sæ P(8tèãÆó¬å•WHJJ¢¢¢€©S§rúôiªªªP©TÌŸ?ŸÈÈÈnëPRRBNNV«•æÏŸëׯ'%%…cÇŽ1}útÒÒÒ¼n7!.Fm“ù* +g$²£¬’ÃÃûÿ  ÊÆo”òvª¿]AZ´w½ó«l¬}¯ŠÍGšÏs Fz@9WÎHD¯×Ë€KG.—‹ºº:rssIOOZr°:tˆeË–Àܹsùç?ÿÉ™3g<½QÒÒÒ¼úr?vìXÏýÌÌLŽ?NUU=î;räHvìØAEEQQQ”••¡Õj=ù[ìv;Ççúë¯÷¼OOš4‰Í›7“í9NDz655ár¹ˆG§Ó¡Óu}=zÓ:ŽÌÌLÏûQff&ÇŽ£¡¡àààëy>mÛ¶ââbV¬X1¤åB!ŠbˆB¡`Lj™ßbGE$úòfübü1Ù]ßÏ`¤P ÒªÐ‹åî÷ ýq>ÿyíhÆÄôê\§ÊšyfãIòLnÂ.‰E©l¢éû?>%e{OQWÖÀÒ±JƦMÐÑ6›>úˆË/¿œÐÐP ùøãYµjU§ÃŸ&NœHXXÅÅÅ|òÉ'¬ZµÊ3¤( ‹ÅÂ;ï¼Cbb"6›ŠŠ V­Z…B¡ÀáhÉÏP\\Üéòî‹Z­&>>žÍ›7·žäp8˜4iAAA9r„Ï>ûŒU«VÀÁƒÉÉÉ᪫®ê¶v»Í›7sÕUWÀÞ½{Ù¹s' .¤©©‰ÀÀ@n¾ùfT*U¯ÛMˆ YÇ KÛÙ”Ú>NHHàG™%ü»l4;?¡xom?aâ²gϰjzwÎ!&¨ó·ÒÒz/~QË›»êq8‡Á\Ô^ðSY¹9ÓÜ®gEÇ÷Žáœ9|ø°''Œ¿¿?éééž@Ek¢m²ZµZMDDõõßÏnåmÜb±pêÔ)***°Z­466zõ-yäâââ(,,$**ŠÂÂÂv½ap»ÝlÚ´ÉÓž.— »½}òæŽe "::š 60bÄÒÒÒˆ‰‰é´ Þ¶GÛçÓßßµZ}N9[uu5O=õwÝu—g•Bq¡“@Ìò÷÷gy†Ã_™)/°2B¯Ä'Ô‹³}¾% ÂGGRa¶sÃG™¢áÒ ‘ÌK'دó/!µM6¾6‚Ÿ–î×í?ƒ^¥ ùtÇw#:ÄëgDл`OOÊËË ò̦‘ÀÞ½{©©©éôƒm뇿øøx‚‚‚¨¬¬$66‡ÃA^^MMM˜L&ŒF#ááá477³mÛ6=ãꃂ‚:]ÞÍ›7ãr¹(//Z~yÌÏÏ÷ôŠQ(ž![)))ìܹÓÓV)))ž\ÝÕÃjµb2™Ø¶m›çmgÈhû foÛMˆ‹Ikð¥c€F©T2?{ÇKsx=,.÷ðìyÑ–Ãéæ;êøïœ:&%ÈJ0Øò–ZVï`o¡™½…f\Fün®M,`^ö4”Je·ÃˆƒÔÔT¦M›†J¥:'ít:q»Ýžë­•J¥B­îÝG‡ÃÁûï¿OBB'NÄÏÏM›6õjÈNbb"yyyL:•ÂÂB.»ì2ϺÖ$úW^ye·½Z:R(,]º”²²2Nœ8ÁæÍ›‰ŽŽfÑ¢EçlÛ×öêçÛf³ñÐC1qâD®¼òÊ!-‹B1$3€ ãDzèävÞ>ÍéƒU¤LPàî‹Ñîún›ÖAë«!*3–Ó̫ᷩvì£&*P@y•Z‹*—Ÿ(cC‰¥ñÃóé»û¾%æ‚bòÞÏA£óçšK 3cü€×Õétž3“Ífë4Á^Çr‡¥RIee%_~ù%sçÎ%$$„ºº:l6¬ZµŠÂÂBŽ=ÊîÝ»¹æškº\ÞÕE«ÕŠV«eõêÕžéÇçøñãí†'µêXöŽ»ª‡V«%**ŠåË—÷X÷Þ´›ƒŽ=a:[§P(ð÷÷çúc9ÕPÄÖꑃ\ʾs¹aO¾™=ù—ûk¨Ì‹8ÃõóRñ÷÷÷*ð2Ô_ÒµZm—3¶ÔËËË=½DÜn7ÕÕÕŒ=ºÇc· ²TUUa±X˜2eŠgYmm-F£÷³]9’íÛ·säÈ4M»)ÁýüüÐh4œ9s†ÔÔT¯Ù*::šèèhêêêØ°aF£_ßöɯûÛCÁétòÈ# R©xä‘G†º8B!Ä€’oL¯×sù¬1L ¯·›#»‹0×ê£B¥Ä“Ä·5¯B 5¡É!ÄgD;%ã¸Xއr<"SF †é‰Œ˜‘@بP´>šï§¦V|?MµJ ¡MÇ Øó[q»\,L…«Nì×”Õ]‰ŠŠ¢¼¼Ü“[¥´´—ËEHHN§“ýû÷cµZ–{­ÛUVVb2™§¶¶Ö3}§Ó餼¼Ü3|Çjµ’œœÌüù󩯯Çjµv¹¼­¶ç>}ú4#FŒh÷KiBBeeeX,–^×¹«zDFFÒØØHAAg»®ºrw×nÐò뤷ÝÝ…¸u—ôuĈÜ:CO¢OÝ”í‡,Á§ž5Ó}9òû XwÏÕp§ÑhHKK#''‡ªª*Ìf3»víB¯××í¾¾¾¾”••ÑÜÜŒÃáÀ`0`³Ù8zô(V«ÕóZßv˜Œ^¯§©©ëDΆøøxvíÚÕnX´ý322سggÏžÅåra4{œ!ÈjµrâÄ ŒF#‡ƒ²²2Ôj5z½~@Ûc(¸\.üq ùýïÛíÆl6c6›» ì !„ésÄÅÅqSv µ›ëØWaàèž"¢kLŒ™K½ lN÷9‰uÛÝW(ѪµízÏ@›Þ4´ïY£W)TÁ±­ßpfßqܸ™¯ã¶eãˆ=/u4 ,Z´ˆ¯¾ú §Ó‰ŸŸK—.E©Tb2™8xð qqq„‡‡£R©ÈÍÍ¥±±NÇÒ¥KQ«Õ$''S\\Ì[o½…Á` ::•JE]]_ý5F£§ÓÉ”)SÐëõTTTtº¼-«Õê9÷É“'ÉÈÈh·^§ÓM~~~»ä‹ÞèªË–-cÇŽäææ¢ÕjIOO'99¹W힞οÿýo–.]ŠŸŸ_¯Ê'ÄpÕU~˜¶¡%ˆ™5q·V|Åy¾D¾˜‹¿ÚÊOÆ—“5q>Ðòüô„¹‚2Ó§OgÏž=ž!ª±±±,Y²¤ÇýFEqq16l ::šÅ‹3eÊöîÝK^^qqqçÌN”žžÎŽ;¨««ëth´ÌžÔ1?L« & V«ÙµkÍÍÍ 233ÛåtéÈf³QPP@nn.6›ÀÀ@.\Øe¾±¾¶ÇPرcŸþ9À9 z7nÜ8$Sj !„i(>Iysή¶Qt²NÙf]ëã¶÷ÕßÝt€Ð755Œ_Trvîâ¯_™ø¦B %†ÆM%0ʇz» ›³uV¥ÖºßפílKkh• ‚µJšÏÖqlûšªk±Z̤…9¹ge³gÍ<ïub8ª««óÌh%†¶¯»­÷;ûÛÜÜÌ·ñʉ1X\ò{Áù¤U:¸=åk®œ…ŸŸß5]µB!.Z­v `ì€p|wk+ìîpŸ6i³¼«/ùÞ|ùÔ.—ò ÷<Êž> ØÅ«ÛÙSîÕhgÿÖ³Gû3j\a‘zLv&§§»“^2m'CúZ©ÀW­ÀW­Ä\ÕLþ¡2êJ*±Y,€‚)#UÜzYÓ§Mìê !„×:ëÓú×ÏÏë.›‚ÑžÇùcp¸eíù ÂÅ #Opýe“¼Â!„Bˆþ“@Ìy¤P(Èž>_ŸƒlØYÌÇáØ€úJ {k*ÑûêˆMö'2Z‡o€· l®– Ìw}eP*@£T V‚.“›¦R3µXŒX-&´*7—ŽssÅì 222䃳bØñfˆRëú°°0V]šéƒCü«h ®!éÀyñR*Ü\w‚]:ŽððpÏò‹aH’B!Äp'˜óL¡PpÉ%—NêÎý¼ÒŸM-³%Ø,nÎ3QtÒŽR­Æ?PI`  _%juKï\.¬N‹¥ÅËaÇf5ã²|ŸÐ59ÈÊÜ$7ógÎò̆ „ÃQW³(u–/&&&†[Ûhüà$–÷~6ѵŧY³(Ù“¨µ³¼0IF!„b`H fÄÆÆrÍ塌9|˜Gΰ½,”|Ó÷¿Bº]`ntá4A“ʉZ •4jШ•´áX¡PçÓDf|=“FÇ0~üxt:ÝÔL!z§m0¦³ûmƒ1 üt± ÕçÇù ,UzÆô“Ráæ²ÈSܾ Ú“4¶« Œä…B!„8?$3ˆôz=“&M"%¥§Nq´ð«ü9m ¡ÜJO³‰«.‚”µ„ùV‘ÕĨ‘$'g88Bˆó §ÀLjj*w(•6aÃYÉÓW*…‹+c³z~©©-=Œ$ð"„B1ødÖ¤!dµZ)++£ªªŠÊê:*Œjj¬:L%.Ô( S9ñÕ8 Õ;ÖÙ "<<œèèhé#DdÖ¤ CÇ×áîfR(**âíÏ¿åí3£±ÊlJ½¢U:¹aä1n\0Ú3õ²·Éy%(#„Bˆóé‡8k’b† —Ë…ÑhÄd2a³Ùp8( T*Z­|}}Q*å—`!z"˜ Goƒ1üÏ'yüwÁhšÚA,é…Ë_måG‰Ç¸öÒIDEE„B!ÄðñC ÄÈOŠÃ„R©Äßßÿ¡.ŠB ogRjýÉVdº9‡·NÅ“o ÂÒ >õ¬J)âòE3 $#„B1Ô$#„bHyŒiåv» æš‹ˆÛµ›ÿý¦/«p¹%hЖRáffènÈt’=}z½hŸ˜·õqÛ¿— !„Bˆ'!„C®»` pN@F§Ó1wî¢¢Ž¿ãÿWœF³Sòføªl\‚•Óâ7n\§³"u—˜W‚0B!„ç—b„B ]cÚÞïøwôèÑÜÊÈíyüûT8‡#w€ï0¢Æ”seR% gM"22²e¹a„B!† Ä!„6úŒ çêeóIùæ¶<Ä¥ITÙ|‡ª C"DcbYL>—^FFÆBϬz„B!„~TCpΞ5IÑÉß¶÷•|?{’ P?òÈ#?÷º´Bˆ ŽÅb‘Ä×°îm mï«T*bcc32„QÊ㸭 ›prqÏ4§Q:™VÌíU¬œŸEJJ k&o IDATjµÚÓ> Kêx¿³ÇŠ‚‚öìÙCnn.ûöí£°°€°°06n܈B¡ ,,lh ÙO_~ù%[¶laß¾}8p€üü|\.áááýzÞ.”öùå/IUU™™™ƒvž5kÖ T*IKK;¯çì‹þ´Gêe·Ûyùå—ùÃþÀË/¿ÌŽ;ˆ%&&¦ÓíÍf37Üp¥¥¥L›6­WõÌöïê\Þ¶óP_+mËér¹xî¹çxüñÇùàƒÈÊÊâ¾ûîC«Õ’’’2$åïÚh°þÏÅðµvíÚ¿ñý,IÎïþºh?“QÇNÏt'hé#„bØñ¦gLÛû­CCCY¼h)£ ÈÚ{”ÏŠB8Ð…Ã=¿;œ?j…“ Aå,НajF2))ÓQ©ZêØSàåb ÂlÛ¶²²2²²²˜:u*.—‹êêj´Ú‹oZó1cÆ0yòd%%%ìÚµ ‡ÃÁ%—\âÕþ{÷±‘yóæç’,—ËÅÁƒ¹í¶Û.ŠóôWÇr¾üòË”””°víÚó~îuëÖ‘““Ãã?Npp0ï½÷÷ß?ï¼óN§Á¼¿üå/”––vz¬áÞÞý|­:–sÓ¦MìÝ»—·Þz ¥RI@@@¯9˜×T« ¥½…hˆB1,uŒ:MâÛv™R©$99™˜˜&ž:Å£‡ØVÄ×µqX]öÛžVéä’ÀrÄU‘56Q£21 @×=‡:.këB œ>}šÒÒR®¾új4gyHÈÅ9¹J¥B«Õ¢ÕjIMMÅf³qàÀ¯1ª'Nàv»Ï{oƒÁ:O e9srr¸æšk<×Ü/~ñ ¾úê+Ž=ʬY³Úm»sçNöïßÏòåË;=Öpoïá^¾VËYTTÄèÑ£‡}/·Ž.”öb ]ØŸH…B\Ô:c:.ënv%ƒÁ@zz:©©©L.(`ÿ·Gø¢8½uÑV¯ _••I!åÌ‹«'=-Q£.i7%u+o{ÁtµìB±oß>²²²Úa:SQQÁ©S§¨©©ÁÏÏììl¢¢¢p¹\ìÙ³‡¢¢"L&¾¾¾L˜0Q£Fyöݸq# ”””PSSƒ¿¿¿ghùwïÞ½œ>}·ÛMbb"EEE\vÙeàr¹ÈËË#??‡ÃABBS§Nõ”¹¤¤„¼¼<êëëñññ!11‘É“'{Uÿ¨¨(, v»•JÕm]¾ùæöïß´ å=z4ÙÙÙݶÏp±ÿ~.¹äT*=öz½žÇ{̳þ7ÞàèÑ£¬]»–¿ÿýïlß¾ªª*"##Y³f K–,ñl»fÍnºé&>üðC¾ùæžxâ ¦L™rÎyZ:tˆO>ù„ãÇÃý÷ßï6ár¹X¿~=~ø!uuudddpÿý÷í9×ìٳٽ{7'OždĈ<ôÐC:tˆ÷Þ{²²2&MšÄ#_—½½ž|òI6nÜÀ'Ÿ|BRRëׯoW¯žÊÓÕ5µfÍ–-[Æ–-[8qâ#GŽäþûïgìØ±^Õ±­ææfn»í6.\ÈO~ò“NÛ»»ç»»×'Ÿ|²ÛçUˆáF1B!†µ¶A–ΖõÔSF§Ó1zôh’’’È*,$¿à4‡Ë\äUómS$6×ð¶¤ÆÉ(ßj²Âë˜ëbTr" SÚ ½éí0¤®–]H DDDt»Åbáĉ¬X±öîÝË–-[¸á†<Ýö-Z„Z­&??Ÿ­[·N`` V«•¼¼¼.÷ÏÍÍ¥´´”Å‹£V«Ù·ožóïܹ«ÕÊÊ•+q¹\lݺ•ÜÜ\²³³±Z­|þùçL›6¤¤$L&‡Ãë60™Løøøx‚:ÝÕ%##»Ý~ÎФžÚg88pà'N`ñâÅü×ý.—ËS¾­[·rÓM7¡Ñhˆ‹‹ã©§žB§Ó±yófÖ®]ËØ±c9r¤çx=ö>ø ?ûÙψïô<uuulÚ´‰W_}•ØØX^yåyä6n܈F£áÕW_%''‡'žx½^Ï /¼À]wÝÅ¿þõ/4 õõõ¼üò˼öÚkDEEñç?ÿ™5kÖpíµ×òä“Oâv»ùõ¯Íßÿþwyäž}öYêëëyíµ×p8¬]»–¿þõ¯žàJÇrÞ|ó͘L¦s†‘¬_¿žÏ>ûŒÇœÐÐPöïßï ötW¯Õ«W³eËþõ¯qã7²nÝ:FåéÕrÛm·qï½÷b6›ÉÌÌäƒ>8§ž|òIÒÓÓ™6mZ—˜ŽíÝ“žÚ»«:{{]tW¾¦¦&|ðAî½÷^-ZDUU‹Åëk¥¯×eo¯‡‡~___êëëùÍo~Ói½z*OW×ÀÓO?ÍË/¿LLL o¾ù&¿øÅ/x÷Ýwñ÷÷÷ºN'>ú(©©©ž LÇzôô|w÷: Ä…fx¼ÓŠvìv;V«‹Å‚Óéêâ!İÐSP¡cbÚŽ·Öa—.^ÄWLá‘K üç„o¹"ö$‰>µh”Cÿz«Q:Iò©áʸ“ü6ë0ÿ¹XÁ—gpÙ¥‹HMMõaºJÆ{±aO°£µGPWôz=ÙÙÙDDD`0ÈÌÌÄl6ÓÐÐÀرc ÆßߟÌÌLüýý©ªªòì¯Óé˜9sf§û;Ž9¬Y³ ! €™3gzöµÛí?~œiÓ¦a0ðõõeÒ¤IždÂ&“ —ËE||<:Žàà`ÂÃÃ{¬»Ë墦¦†ÜÜ\ÒÓÓ=Ë{ªK_Úg¨¹Ýn8@VVÓ§OÇétrðàA*++)((`ÆŒ\}õÕ$%%ËêÕ«‰‰‰áÈ‘#펹bÅ ®ºê*RRR<×OÇóóÀ0~üx‚ƒƒùÑ~DMM ÅÅÅØívÞ~ûmzè!’““‰å·¿ý-F£Ñx â׿þ5cÇŽ%$$Äó%ñ–[n!>>ž#F°|ùrO]ŒF#ï½÷÷Ýw!!!DDDpûí·³uëÖ.Û£3N§“7Þxƒ‡zˆÑ£GÎâÅ‹=½(º«—F£á׿þµçKðG}įýkϱ322X½z5ü1O>ù$þþþ,X° Ýù?þøcvîÜɽ÷ÞëõóÚ“žÚ»§:{s]tW¾ªª*ÙÙÙøûû“””ÄØ±c=Ûwצޞ¿ãu9P×CgzÛ­yä233 çž{î!((ˆÏ?ÿ¼WÇ|æ™g0™Líz³t¬GOÏwO¯B\H¤GÌ0c4Ù¶uõ 4441}údÆŒ}Q&BˆÞêj¨pÎp¥ŽëÚ!BBB a̘1L+/§¬¬ŒŠª#Ö)9VçË©FŠ-Á8Ýç÷÷ %nµM$ûÕ“lbt¨˜¨pbbR‰ŒŒl7ôÆÛ„»][.† €Ðé)xÑv胿¿?jµ»Ý´ô9uêX­VÏé•Ò¶ÍÚîßÔÔäIÝÙ¶ ¸Ýn6mÚäYîr¹<ç "::š 60bÄÒÒÒºœ}àðáÃ>|ØSŽôôtÆŒãYïM]zÛ>C­  ›ÍæÉ¡Ñh˜;w.Û¶mc„ lݺ•Y³fy*õõõ|úé§üðC>üðCOðqíÚµ<øàƒ¼öÚküþ÷¿gݺu477óòË/óꫯxzu¿óÎ;<ðÀ\qÅÞÞÝÕ¹/×EÇò)•J^xáöíÛLJ~ÈÃ?LVVO=õTeïëu9P×Ã@•§3J¥Nçõ1'MšÄ™3gxçwøéOÚe=¼ùÿêêu@ˆ b†¡¶¿Fõ6J-„?õŽé¸¼í ®òÉ´>V*•Drr2‡ƒÆÆFšššhjjÂh4b6×ÓØl¤Éª Ù¦¢É¦ÀêTbu¶–h•.t*~'þ:7zþ¾øúúâëН¯/~~~ž^Õ¡«Ç½ ¶ §/Ö)==ýû÷3jÔ(Ï—–ÞhÍóК¬ ¶¶¶Ý/ÎÝi¶¼¼¼Óž,~~~h4Μ9Cjjj—Ç‰ŽŽ&::šºº:6lØ€ÑhÄ××÷œíZgLêO]úòek(íß¿ÿœ<"YYY˜ÍföíÛÇÉ“'™6mÇŽ£¾¾ž»îºË³íÉ“'©¨¨èÓyº´äµhíár¹8vìW\q…×Çi+** ¶oßÞåLC]•³mÏ§ØØXOYÚ]óÖ™3gذa?ÿùÏyúé§ÉÊÊÂßßß3°ãëIjjªgˆÈc=ÖnÈ ÀSO=…V«m7Ti Û»»:÷åºèª|'NdâĉÜtÓMÜxãTUUõîëuÙŸëa ÊÓ±7]uu57ndÅŠžeGeõêÕ^3::šµk×òË_þ’qãÆyfÚêXoþ¿ºzâB#9b„B\°:æEényW9d:>n]¦V« aäÈ‘Œ?ž©S§2wî\–/]ÂÕËæsòé¬YžÅmË3¸sùXÏí§ËÆpÛò Ö,Ïâ¦Ëgrõ²ù,]r)³gÏ&++‹Ñ£GOpp°'Ó]Η®rÀô¶þ“ñãÇÆ»ï¾Ë‘#G¨««£¡¡Ó§OSTTÔãþƒ›ÍÆÑ£G±Z­xÔÑh4¤¤¤““CUU&“‰={öxÖ·vÝß³ggÏžÅåra4©®®Zz¿ž8q£ÑˆÃá ¬¬ µZݧîõÞÔÅ××—²²2š››{•x(u–ÿB©T²páBþð‡?0kÖ,χš››ù÷¿ÿMCC[¶lh7«NoÎÓ.¿üržzê)Ž9Bmm-Ï=÷ÁÁÁL:µ5üžZ­ææ›oæoû{öìÁétRQQÁÑ£G»-gdd$ ¼¼³ÙL`` sçÎåé§ŸæÌ™3˜L&vìØÑnHTW\.k×®eÕªU¬ZµŠ´´4^xáRRRˆçÑGåÈ‘#TWWóé§Ÿ²qãÆsòÄô¤³z<üðÃífø ¢´´·ÛÝc{wWgo®‹¶çê¬||ðÁž€ç¾}û0 ]öTi«¯×e_¯‡Î„††RPP€Ëåòª<¯)hé…xäÈòòòhhhàÕW_Åh42oÞ¼^ÕqêÔ©Ü~ûíüîw¿£¤¤¤ÓzxóÿÕÕë´Ì`uÛm·µ{ؾ};wÜqG»üWï¿ÿ>wß}÷óz(.NÒ#fòf¬¿Bˆïõ4\©íº®zÉt·¬íþJ¥½^ßç1é½é½ÒÛ¡F?”÷ ¥RÉÒ¥KùöÛoÉÏÏ'//…BAppp»Ü] bÊ”)ìÝ»—¼¼<âââΙ†·'ÙÙÙìÞ½›Ï>û NGRRðýs0aÂÔj5»ví¢¹¹Ù“7,, ›ÍFAA¹¹¹Øl6Y¸paŸ†“xS—Q£FQ\\̆ ˆŽŽfñâŽ>Ï`*))Ád2ušÿbñâÅüïÿþo»ÙcFŽÉ]wÝźuëx饗˜>}:sçÎí×yºó«_ýŠ¿þõ¯<ôÐC8¦L™ÂŸÿüç~ýÿÝrË-èt:ž}öY*** aÕªUŒ3¦Ër.Y²„;wrà 7••ÅÓO?Í£>ʳÏ>ËOúSìv;)))Œ5ªÝ´Çyë­·0›ÍÜxã<ðÀÜpà ,^¼˜I“&ñ /ðâ‹/òàƒÒÜÜL\\·Þzk¯zuV—ËEYYY»YЮ¿þzþøÇ?RPPÀÿøÇÛ»«:{s]´=×Ýwß}NùšššøòË/ùÛßþ†ÑhdäÈ‘<ñÄ^¥ èëu }»:sÝu×ñÄOpæÌžzê©ËÓÙ5åççÇÂ… ùÓŸþDuu5ééé¼øâ‹h4š^×qõêÕ>|˜‡~˜ßýîwÖÛÿ¯Î^ åùjÍÔª¾¾žÒÒRl6›gYmm-eee8ŽN{¥ 1†â›7çìjE'ë”mÖµ>n{_ýÝMh}SSÓÑκ³6›O?ù”ƒ¿¥©©‰©Ó&±|ù2É#D/ÔÕÕyõK¨¸xu÷ßÕºÞ.ï¯Þ'’Ìðf6›yë­·X³fMŸósˆï¿ÿ>_~ù%Ï=÷ÜEqžþºPÊÙ“á^á^¾Vƒ]Î5kÖpå•W¶š4.”öƒC«ÕŽ,€°Žïn­ãjÝîÓæ1m–wõ¡Í›sƒ à0âv»±X,ètz, n·?_?, F>h !„—ºê!Óv]ÇõõŒélù@ëO€EÞ†êêj$3¹öÚk/šóô×…RΞ ÷z ÷òµºPÊÙ“‹¥Bô•ôˆ&\.………ü{Ãû´ßž˜8’«®^ABb‚|è Ò#FtäÍk¾·ï }}ÿðöõÛ›íä½`èÕ××ÓÐÐ@tt4f³™-[¶0vìX¯†F !Ä…â|õˆ¢-é#úÅívãp8úô!½¶¶– ÿ÷%Eg™4%“Qɉ€›S§ Ù¿÷6¼Ïª›¯óL+Ø …µZ= Üóòò¸ï¾û˜?>?þø€·£ßýîw„„„p÷ÝwŸ·stuÞÖ„cjµš¸¸8V¬XÁUW]Õn:½¶zõj/^ÌM7ÝtÞÎ!ÄQW½`ºÚ¦»mòµ´7Ç’àËðb³Ù8pà_~ù%¾¾¾Œ3F‚0B!„ðŠbHë4§jµÜî^Mév»);[Æ™Âb&MÎ$=} ÍßM˜‘1€¼Üƒ|úñ焆…ôúƒ»IÉIÄÄDXBªÖ_þvïÞÍf»(sØ\qÅÜqǘÍfrssùË_þ‚Ùlææ›o>oçœ9sf·S !úÏ› LgÛvämн? ¾ _¬\¹r¨‹!„çÕ믿>ÔEâ¢$˜àp8¨®®&:*ªÏcÃ8 À¨Q‰XÌfšFÔj )) äåäøñSøžõéÓñss÷±`á\ÒÓÇ·›æ­/ìv;Û¶mã™gžáþûïgÏž=Ìœ9³_ÇŽ4 ¾¾¾øúú²dÉšššxóÍ7Ïk æ¶Ûn;oÇBœ««¼0}Ùw HàE!„ââwþÆXü€466`‚>7jµ???üüüPk5x¾(ú>lÍf³±{w.ßõ´é={öÀèÑ£ÉÎÎfëÖ­íÖß~ûí¼ûî»üâ¿`É’%ÜqÇ;vÌëõ=yçwøÑ~ÄòåËy衇(//Zòì¼ùæ›ÜtÓM,[¶¬ÝºÖó®_¿ž»ï¾›Ë.»ŒÿøÇ|óÍ7^Ÿ733“úúzÌf³çx_|ñ<ðK–,!//h Týýïçšk®aÅŠüéOòìóøãóä“O¶;î›o¾Éc=æ9æ‡~èY×ݱ֮]ÛnX˜ÍfcöìÙ¼ð žef³™ùóçSZZêu=…ø!S(ínÛù„B!ÄГ@̰Ûíø ý:FKN8uªFƒ¿¿?þþþhÔjN,@«éßðŸúºzìv{¿Ž°yófæÍ›À¬Y³ÈÉÉ9ç¸Ï=÷·Þz+ëׯgüøñÜwß}477{½¾+o¿ý6ü1>ú(ÿøÇ?X´hAAA@K×ɯ¾úеkײnÝ:´Z-÷Üs§l ¬[·Ž;3þóŸŒ7Žßþö·^·IMM ¡¡¡Ú<×?þ83gÎä…^`üøñ<ÿüó”••ñÊ+¯ðÿþßÿ£´´”—^z €… ²sçÎvC×¶oß΂ :=gwÇš1cûöíóü‚¿ÿ~vìØáÙÿÀÄÆÆãU…íu ”tu¨ý„B!ÄÅO1Àív÷;÷JbR‰‰#Ù¿÷ß|s“ÉŒÉdæ›o޲ß!bb£Ðhû7¤h fвX,ìܹ“¹sç0yòdìv;ûöík·Ýƒ>HFFaaaÜu×]y’ßz³¾3N§“7ß|“_ýêW¤¥¥ÆÂ… ÑëõØívþõ¯qÿý÷“””DLL >ú(&“‰œœ eš¼x€±cÇÌM7ÝDMM %%%=ž÷äÉ“¼òÊ+\ýõíÖ-_¾œ•+W2jÔ(ôz=F£‘M›6qÏ=÷Lxx8·Þz+Û·o`êÔ©8N:@UUgΜaúôéçœ×›c577“ŸŸÀ×_Íí·ßNCC@KRåÎŽ-„X`B!„Þ’1ÃÈ¢E³ùäÓ¯ÈË=H^îAÏòää‘\vÙ|þýîGCXº;vì@¯×Åb`üøñ|õÕWL:Õ³]Û/"J¥’ñãÇS\\ìõúΔ••a2™:•¢´´‡ÃÑ.Ñ­^¯gìØ±}?xÛ¢¢¢0 ž¡>½óÎ;¼óÎ;( ¢££¹öÚk¹âŠ+Úm3nܸvKJJp¹\üìg?óÔÑáp`2™€–¼3³gÏfÇŽdff²}ûv²³³Ñëõ眿§cùúúrÉ%—°wï^’““Ù½{7O=õ'Ožd×®]$&&’››Ë½÷ÞÛu£ !„B!„Tˆ&0øø0Á JŠJp£b×Î=ÌŸ?ƒ„ÄFeeõ–ó‹/¾ ®®ŽK/½ôœu÷ß—yr”Je§Áoמ¡K.—ëœóØl6\.N§³]°E«Õv;£Sw¿\/[¶ŒŸÿüçhµZ¯ûùùðꫯÐé6 ,àé§Ÿæ®»îbûöíüÇüGŸ5cÆ öìÙCvv6*•Џ¸8f͚Żï¾ËâÅ‹©¬¬$##ë² !„B!„8ÿdhÒ0QV^†ÛíÆjµàèÏÊ•ËñðÃbµ`µZHIMÒ2677óõ×_³nÝ:¶mÛæ¹mÚ´ •JÅ€–\*ï¿ÿ~»};FBB‚W뻃Ëåâøñã笋E¡P´K¾ër¹8vìIII}¨-øøøàëëÛ«Y¦"##ñññi—§¥£‰'b±XØ¿?§NbÊ”)}>ÖŒ38xð 999ž!HÓ§OçĉlÙ²…É“'Ø”åB!„B!úO1ÄÍjÃn·ãt:1èõhµZ”J%gÏ–ât:±ÛlÄÆFi·nÝJXXiiií–’žžî™=I¯×sôèQöíÛGcc#ÿøÇ?0™LÌ™3Ç«õ] `öìÙüùϦ¨¨“ÉÄÎ;1›Íøøø°téRž}öYŽ;F]]Ï?ÿ<ÁÁÁLž<ùü4H'Ôj57Þx#/½ôyyy8N*++Û”J%óæÍãü#3fÌè2Ðãͱ¢¢¢ˆŽŽæÿø3fÌZ†,effò·¿ýMòÃ!„B!Ä0#?•ÍͨÕjÏÔÒÑѱžu•Uu¸Ý`¶Z ð÷',4„êšÚ!)ç–-[<³%u4kÖ,Þ~ûmî½÷^|}}™?>Ï>û,555Œ7ŽçŸÞpèi}wzè!žþy~þóŸãp85jIII î¹ç^zé%}ôQ“'Oæé§ŸôÄ™7ß|3:ŽçŸžŠŠ ‚ƒƒ¹ñÆÛ°.\Ȇ ¸ï¾ûú}¬™3gòÆožžîY6kÖ,öìÙÓeo!„B!„Cc(¦vðæœ]m£èd²ÍºÖÇmï«¿»é  ojj::3µ*//'f0•F IDAT.6¶ç »pâäqœ'UUX­6f̘…¿ûÝát:™<9“è˜("ÂÃ9vì»vííó¹~rëj¢¢¢ú¼¿7n¿ývV®\ɲeËú´^ˆþª««#:zh{ !„B!z¦ÕjÇÀXÇw7×w›¸;ܧÍcÚ,ïêK¾7_þ.@àš4 X-ìv;§µF‹N§£²²_jµš’⳸œNì;qq1C]\!„B!„Bô‘ Mb&“µZCSs˰¤ˆˆrss9qü¡Ô×7RñÝLI‹?‚C©«mÊb !„B!„¢¤GÌ;[zh ²¸\.FŒ‰ÕjÅli¹9]N õ X,-³'¥ŽêÛ,@B!„B!„ZÒ#fÕ××Rt¦V‹V«ÅØlB¥Râp8°X¬ìÊÙJC£§Ó @BB<áá˜Ì&8’’;6S§OBEe5_½ˆkö½W^y¥_ë…B!„Bˆ‹•b™Íf'8$‹Å‚B©B§ÓÒÜÜ@@@ J%œ)ãLa1F“‘ˆˆpJJJˆŽŽÆb±àçëÇþƒ±˜­TTÖÐXoÊ* !„B!„ÂKˆdáá´ÎØ”Ÿ‹Õ‚ÛífÜØqc4šq9ì4äŸ.Ân³2nœµFŸŸj¥š#G P(}Šf!„B!„BôžbÈ_¶[z½O¶Ÿ ½F‰Ýn§ ÆÉá#¾€ »9?¿&Êkšù²,’³–`üNY˜iÀét›È[ùöúœ?éõB!„B!„(’¬wˆè±â§×`±˜¨wxÖ©GP2ÿ>ÄYó÷Ëóδô’±X­D…ø$q4!„B!„âB"˜!¯©ZfKr¸ÜØ}ã=ë”*5¾a(õ Py–®Rc¶9±˜-(°2S?èåB!„B!DßI fˆ„éÌ8.ìve N a=îãRùr° »ÝŽËé$;ÅgJ*:ãt:yõÕW‡ºB!„B!.0ˆ:… ?«µe¶£Z»¯—ÉväÚ€–áI±aÂýU=ì#†“ÉÄ믿ŽÉ4°³]¹Ýn^{í5Þ{ï½;æo¼ASSÓ€O!„B!~è$3âT( , .·‹>Öë}÷—ªp8ÝX-(¸\†']p sçÎÅ`0 èq‹‹‹‰‰‰¡¶¶³Ù< ÇB!„B10$3ÂuF\.V›ª&'úÀ¯÷µàÃѳMXív\n³RexÒ…F¡P˜˜8àSŽŸ>.ÏÐñß»6ßHgl6}ô—_~9¡¡¡òñdzjÕ*T*MMMróÍ7£R©°Z­|üñǬ\¹’ÐÐPŠŠŠ(((8ç¸=mçp8ÈÊÊ"((ˆ“'O²uëVV­ZÕcy“&M"((ˆ#GŽðÙgŸ±jÕ*8xð 999\uÕU˜L&6oÞÌUW]E@@{÷îeçÎ,\¸°]Ý?ùäV¬Xá)ã™3gºÜ?55•ŠŠ V­Z…B¡Àáp XÝ;*,,$66µZM||<›7oÆl6{†?Y,ÆÇœ9s¨¨¨`Ó¦MÜ|óÍètºn×µ²Ûí|ôÑG,]º”°°0, :®Çç@!„B!D{24ié ˜Ì&,3µF'š ïóôª±ùp¦ÊŒÅlÆh222Ä}Jz®òòr‚‚‚  !!???jjj<ÛŒ3Æó¼¼¼œÏö±±±hµÚNÛÝv …‚   FEss³Wåi»_JJ Z­–€€ÏãÆÆFÏqL&Û¶mãƒ> ¨¨ˆúúúsÊÜi»Ú?((ˆææf¶mÛFQQQ§‰¾Ö½£Í›7sòäIÖ¯_Ï?ÿùOìv{»áI …‚°°–™¹"##  ªªªÇu­***ðõõõl§×ëQ(^]B!„B!¾'=b™Ûí¦¾¾f“…‚zÚÀs=Q(Õ¼—[ͪA-yF'ƒÓé<'b³ÙP*[âysž¸\®N/y»]ë9ZÏÓSyÚ긬íc­VKTTË—/ïò¼Ë›ýW­ZEaa!Ge÷îÝ\sÍ5íÚ©¯uoËjµ¢ÕjY½zµ'ØsüøqŽ?îžäv·¿HT*•gÛîÖµ²Ùl&îÍs „B!„BzÄ oc! ' ØQlÀšÞçóí.õåWo•ð¯mE”ÔXû|œÞˆŠŠ¢¼¼Ü“s¥´´—ËEHHH·ÛWVV-9Fl¶–é·N'û÷ïÇjµv»Ý@–§+‘‘‘466z†¹Ýnìv»×eìj›Í†Õj%99™ùóçS__ÕÚþ¹êkÝÛ–íôéÓŒ1¢]ð$!!²²2,‹gÙñãǨ©©¡¹¹™ððp¯ÖDDDPVVFmm-Ð2TÉív÷ø”””x†pAKÏšÓ§O{WWW{Î-„B!„?Ò#f€¸\ ò"¬uÒ‰*"–¸À°~O¡1`Ó$°ñ¸Ž5¢ÔxQÈþ%ô5 ,Z´ˆ¯¾ú §Ó‰ŸŸK—.í²÷ƒÁ``Á‚lÙ²¥RIXXhéÅqðàAâââïr»,OW4 Ë–-cÇŽäææ¢ÕjIOO'::ºË2FDDàçç×íþ~~~|ýõ×FœN'S¦LA¯oŸ¨»6êNÛö;yò$íÖët:¢££ÉÏÏgìØ±@ËôÖyyyèõz–,Y‚Zýý¿wëüüü˜;w.Ÿ~ú)ƒÁÀ¼yóðññéö9(((Àjµ2räHŠŠŠ¨¬¬$99h Üœ:uŠ´´´Þàºë®í.Fç«îmgiêͺ U]]ÑÑÑC] !„B!D´ZíÀØ+àøîæúnw‡û´yL›å]}É÷æËÿ %üh!C“€F£ÁeªE‚NRx =¥Ô:b Í^õ¶HÍÍÍžÙ‚Ž9Bbbb¿¶»ýë.„B!„?424i0J½‡W޳õjt½g+?Øïc¨âP…¥¡ÇµéϬAƒ¥°°o¿ýÖ“OdæÌ™ýÚîbôC®»B!„BüÐÈФRWWÇö]y•!T[´­ýÄ=¸§ßÇP‚  â’(;—ÍFppp¿)Äp'C“„B!„¸0ü‡&I fY­V*++1™L~ìþðññ!""N7ÔEbPH F!„Bˆ Ã1#C“N§#>>~¨‹!„B!„BˆaJ’õ !„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B  Ä!„B!„B õPàbôÿ³wçáQÕgãÿß³Ïdß÷IHØ‘]%,.5@©Š ÕǪ_[k«µ-}úüÚ>Z[½ZK­ âVÑjEËã""aAYaɾM2“ÙÏÌïcBV`’€Þ¯ëš‹Ìœóùœûœ9s8sÏgQ¿ßV«E§Óµz]Q”^E§ÓµŠA!zšÃáà7Þ`Æ ”––BVV·ß~;ãÇgÆŒ„„„ðá‡öu¨B!„Bô:IÄYCCÊ‘ÍXœ§p†¥Cf.444@ €F£Áï÷z<­öLƒ'†ˆˆˆßžBøý~~ñ‹_°k×.¢££¹ì²Ë(//çóÏ?ç–[néëð„B!„ès’ˆ ¢ššoü”ÄÚBbCq54R_Oû’““ˆl6jkk‰‰‰é“í !¾;:Ä®]»;v,O?ý4§Ó‰Édêãè„B!„è{’ˆ ·ÛMýî±úBÕ×C­§aÈ""r²;,ëUÀã jÒtºŽÛ ¬“u:Ž£ÑÛí–/BBˆUUU4%^|>ƒ‹ÅÒj=¯×ËSO=ÅÆñù|Ì›7»îº «ÕÊŠ+ضmUUUDGG3kÖ,~ô£a4˜1c3gÎ$99™÷Þ{äädžþyœN'Ï>û,Ÿ}öv»Q£Fñ³ŸýŒäää^< B!„BtLë ŸÏ‡ýÈîv—……†¶ûz³G€£5Îv—;Ô8«9ÿøtZ-n·ûü+Bˆn:t(f³™°páBþñpüøñ6ë544°yófRSS©««cÅŠlÙ²“ÉDAAéééÌœ9“@ À믿ÎË/¿ÜªŽ?ü+V`±XÈÉÉ`éÒ¥¬ZµŠœœ¦NJaa!<ò~¿¿çw^!„Bˆn1Að8Û_¦íz°ÜŠ’žúåŸxùŸO·YöÌ?^$">…‰×Ì;ïø|Š­^Þn!DÏŠçÉ'ŸdÙ²e>|˜×^{×_Y³fñóŸÿœ¨¨(uÝ7ß|“ÉÄŠ+X±b{öìaòäÉX,V¯^­®WRR‚ (,,äG?úQ«í=÷ÜsŒ5 €#GްuëV&L˜ÀŸþô'\.Ÿ~ú)%%%¤§§÷ÂB!„¢sòÍ<ˆ:€×YWÞeÙWŸ~ІªZî¼ý'm–y½^Š¿Ç°‰3!%ªÒ]³76ÒyËœîøÝï~dž ÐëõÄÇÇ“››Ë]wÝ¥v¸ýöÛ¹úê«Õ9ï¾ûn®»î:fÏžÝng/?»¼âÒ2nÜ8^}õU¶oßÎÚµkÙ¸q#ëׯG£Ñðûßÿ€ØØXµ«äðáæV2Í8À[o½Å¾}ûhhh P__ßj;&“IM°cÇ&NœØjÝ–u !„BÑ—$Ó š«ìÌÿó¿¼óìŸùÓÿÓfÙ²¿.çÎ~LxdäyÇ bk˜yóæqï½÷âñx8tèüãQ…ÿøÇL™2Eí&p>εü‹/¾ÈéÓ§ùŸÿi{ì„}C£Ñ0qâD&NœÈܹs¹ÿþûÙ³gO»ëêt­[ –––rß}÷‘””ÄÒ¥KÉÈÈh7‘{ö¸3‘g®‘ãÇ硇jµ,%%åBvG!„Bˆ ‘DL9pÊÎêTZÝüráLfS»I€Ÿ ©LwìÛ·—ËÅW\Á¸qãP¥U=ÉÈÈ@«ÕRTTDLL á}4SB!„‘DLØu´ž[žúÅ@§ÕðË…Cº.tÆö#V¶¶òF~)¿œŸÅ]Wöý˜UUUdffªÏÛ늴eËÞxã jjj2d?ûÙÏ:¯áìò~¿Ÿ7Þxƒµk×bµZ>|8>ø III¼ñƼúê«lÞ¼™¹sçòàƒâõzyá…ظq#n·›©S§rÿý÷·úýí·ßæý÷ß§¶¶–aÆñàƒËóÏ?ÏÖ­[©ªª"!!Ûn»k®¹¦'ß:Û·o硇"..Ž~ýúáp88|ø0 ,èV ¼÷Þ{ø|>öîÝ tݲ/>>žë¯¿žwß}—;3«¯¾šªª*ùßÿýß Ø+!„B!‚G1}à­‚R€“ŽïOH<§²W_ÏÉ*eu.^Ï/í“DÌŽ;(,,DQòóóÉÏÏgùòå®_RR¡C‡xú駉gÅŠüä'?á_ÿúf³¹Ëí½üòËò‡?ü³Ù̳Ï>Ë<ÀÊ•+¹ùæ›q:mº&-[¶ «ÕÊòåËñù|<öØc<÷Üs<øàƒ¼ñÆ|òÉ',]º”ØØX¾øâ ¢¢¢0 ¤¥¥ñè£b2™øôÓOyüñÇ2dýúõ»ðƒ'Ä·\zz:?øÁعs'EEEhµZ† Æ~ðfÍšÕ­:ÆŒÃwÜÁêÕ«Y»v-¹¹¹¤¥¥qàÀ.Ëþìg?#!!>úˆ•+W’––ÆÐ¡C Ýê&*„B!DO“DL(µ6M#}Ó”~uCGªý«J[ÇÓ«z”¦GJJ2÷ßǑҦšÖµ.ã°Û0[,huz2ã4dÅÿ‹Ç‰'xä‘GÔçZ­–÷Þ{ûï¿¿ÝõEáÆodäÈ‘üò—¿dÑ¢ElÚ´‰ï}ï{nËëõòÖ[o±lÙ2µÕÍÒ¥KY¸p![¶laúôémÊ466òþûï³jÕ*¢££¸ë®»øïÿþo|ðAEaåÊ•<ñÄ 4€+¯¼R-ýõ׫/^¼˜?üƒJ"Fˆnèß¿??ýéO;]gãÆ­ž?žmÛ¶µzíž{îáž{îévÍôz=wÜqwÜqG÷B!„¢—I"¦DöÖê¹ßß4»RxHÓ•á& åu–}R‡ÒA.憱aÜty$#S4l?âdéš}üæ™éê:‡‹ŽrßÏABBϽð$‘Áß`áÂ…êÀ¼‡ƒ5kÖ°lÙ2FÅ”)Sڬ߯_?222Ô烑#Grâĉ.·UZZŠÏçk5x¯ÙlfèСœeee8ÜnùúúzÖ¯_Ͼ}û°Ùl”””àv»»ŒU!„B!„èŠ$bzAGÓZ·4(ÉÈ=¹x}í¯;z@×]xê¬ \›7“ôþ©ÔÕ5ôX"¦¥,XÀ¦M›Ø³gO»‰˜ö  C—ëy<ü~?Š¢ ÕjÕ×F£:]öÙÂÂÂX±bmÝnšÆž9{¶—ËÅ=÷ÜCnn.K–,!11‘ûï¿¿¿ãÖJB!„B!DwI"¦—ù”Õ6Fý7‰…Ø0Ìê8qÒ|x«e‡¢¾¾¾U—ˆ£GRYYÙe¬B!„B!DW´]¯"‚eÇ‘zÆ[zŒ»'À¾R¨q›˜>º?ûJ¿YôÕ‹øtóçd Š6q8å¶Iá}ÑèI!„B!„í‘DLjž9:DÃð-ÃSL8£ªÎËñ2+ ­&*ÒòÄ?žPŸ…µ?»³B!„B!úˆ$bú@ThS†äã/ª¹bP4ãFv»åÊ‘rïo?͉òz¢Ã ÒâE!„B!„¸„ÈôÕ}`ÚÐ(•عå©/Ωìÿ÷æa>ØU Àô¡1AM!„B!„=GZÄôESR¨¶yù϶ ʬîs.idúÐX~yCVD'„B!„Bˆž"‰˜> ÕhøqÞ~œ7àœË¾þÓQÁH!„B!„½B1½,ðåWû±5ØÎ©\xD8#†C£‘1a„·>úˆ¦M›ÖfÙ믿ΠAƒ7n\ÇÈÏϧ¨¨‹ÅB^^±±±A©ûÍ7ßdĈ 6,(õ}Û\,ÇGQþñpûí·yÞõtç¼½Ð}æ1»XŽ¿B!Ú'‰˜^öåWûùÏ»ïŸgi #GÈM•âÒ•™™IBBB·ÖݶmV«•ï}ï{çµ­ýû÷súôin¹å4 f³ù¼ê¹X\èñçïìóöBß‹Kù½ì‹Ø/åã%„B´Gë%EQX±bE_‡À³Ï>{^Ë„mMš4‰~ýúõʶ¬V+ „††‚V+ÿå‰óÓ›ç­B!¾ý¤EL/1| ¡²¢êœÊ%&Å3|ØÐž ê;èÕW_Uÿdee1yòd´Z-‡ƒ·Þz‹E‹Ò­úΧŒßEgw™8qâ………ÔÖÖJvv6W\q»wïfÇŽ=z”áÇ3}úôVuvïÞÍp:$''3}út"""øôÓOùꫯ(**"&&†›o¾¹Uù޶ °bÅ ®¹æÒÓÓ¨¬¬dÕªUÜwß}jùãdz{÷n‰‰‰Ì˜1ƒ¨¨¨Në^»v-ƒ+¯¼R­g÷îÝ”••1gΜs>Š¢PXXÈ‘#Gðù|dee1uêT ƒz¼³²²8qâÕÕÕDEE1sæLÊÊÊøê«¯°Ùl¤¥¥1kÖ,,K—Ç¥»Ç ¬¬Œ¢¢"*++‰ˆˆ`úô餤¤ ( [·nåøñãØív˜0aƒnužŒ;–PVVF^^ýúõërý~?Û¶m£¨¨ˆ@ À€Ú=×­[G P[X4wa5j”Ú¥ÎëõòüóÏsë­·²víZõ¼íìÜìhŸ[:ßò]íûÙ:««³ÏNgïmw>——ò¹/„BôIÄô2æL÷¢}‰˜?>áááØívV¯^MLL Æ Ãb±0}úôsº1;—2[·neÈ!DGG_HøB\òÜn7~ø!S§N%''»ÝŽÏç`ìØ±x½ÞN»#lß¾ââbfÏž^¯§  €wß}—[o½•™3gb4q:\uÕUç´í¯§²²’ Faa!ï¼ó·ß~;Š¢tXwvv6›6mjU×±cÇ9räyÍ›7ãr¹X´h~¿Ÿõë׳eËõ˱Ë墰°E‹N~~>o¾ù&—]v³gÏàÃ?dëÖ­Ìš5«ÛÇ¥«õœN'àÆo$22’ÂÂBÖ¬YÃ’%KÐétDFFªïÛ‘#GX¿~=‰‰‰­®‹k×®eÆŒLž€ËuîÓVwÅl6‘“3³Ùôº¿ÍÂÂÂHKKSoú4 çTǹ”©¨¨ +K¦Ân·£(  Àd2a2uÿÚ¥( Ÿþ97Üpƒ:ïÕW_ÍË/¿ÌñãÇ8p`mšZ^Œ=Zmapå•WòÊ+¯päÈ:¬{À€x½^ÊËËIJJÂápPUUEFF6›íœbòx<ìß¿Ÿ%K–¨-ñ&NœÈš5kÔ/£f³™qãÆ‘˜˜À˜1c8|ø0ãÇWË :Tm=ÔÝãÒÕz‹…±cÇ’””À¸qãøê«¯°Z­ÄÆÆ2räHuÝqãÆ±ÿ~***Z%b† ƈßüjÑÕþ*ŠÂ¾}ûX°`qqqÌš5‹¢¢¢6ñ÷ïß·ÛMuu5qqqœ8q‚+®¸‚;wRSSCll,'Ož<§ÿ ºÚç )Þå{Ýݺ¢¢¢:ýìDGGŸ÷g£³óâb?÷…BˆÞ$‰˜^fµÖöHš’<ÖºZ’’“{¤þÆÆF6lØ@]]Š¢0dÈ&MšÀK/½DVV¥¥¥¦L™¢ö§ïlYKeeeàñxˆŠŠÂëõªË^{í5²³³9tè“&MbРAœ>}š-[¶àv»‰‰‰aæÌ™äççÓ¯_?†mêÆµwï^œN''Nlµ-·ÛMII áááœ:uŠ’’&L˜ .öÙg¹÷Þ{¦&Üü1UUU ¦NJr;Ǹe™ÊÊJ p8˜Íf¦M›FBBŸþ9eee¼óÎ;dddpíµ×¶»!!!TWWóÙgŸáp8°X,\sÍ5¾B\jbbbHKKcåÊ•ddd0lØ0µ+PWêëëñûý­P5 $%%QWW×£ÛˆŽŽ&&&F}®ÓéHII¡¶¶–ÁƒwX·^¯'##ƒââb’’’8~ü8ýúõÃh4žsLV«•@ ÀÛo¿­Î¨ç÷ûñx<­Ök9Û^óï–×ט˜õywcèÎz-[DDD`0Ôí8NŠŠŠ(--ÅívS__ߦåMs¡»ûkµZñûýÄÇÇ·»ï-FRSS9uêqqqóýª*Š‹‹ÕDL{IŽÎt¶ÏR¾»ïuwêê곓••uÞŸÎ΋‹ýÜB!z“$bzYTT ••å=Ô"ÆLTtL»ËÀ×ßÜý&""—ËÅÛo¿MFFIII¸\.† Fnn.¼ÿþûÜzë­˜L¦N—5óx<|ôÑG|ÿûßWo€Oœ8¡.·ÙlDFFrë­·¢Óép8|òÉ'ÌŸ?ŸˆˆvïÞÍÖ­[ŸÍ›7ŽÏçÃétR\\¬–;Û˜1cˆ‹‹ãÔ©S|ôÑG,^¼¸Ã~ù‡5kÖ0wî\bcc)..fíÚµ,^¼˜1cƨ¿¼&&&v¸¹¹¹¬Y³†¼¼<âââp¹\˜L&@‡ï—Füyó8}ú4äÃ?$--9sætYVQ~¿¿ÕNN×êyOl»#ÍÛîªîììl¶oßÎĉ9vìÙÙÙç“Ñhছn ÚŒPÝáBŽŸ×ëåßÿþ7äòË/'<<œU«Vá÷û;-×Õþúý~@ ÃLK™™™œ8q‚ŒŒ 4 QQQdff²oß>ŒÝno3¾K_ æ{ÝÕgçBÞÛKùÜB!z“$bz9ò›_çÌf#GŽîõ¢"#;ýå¬;´Z->Ÿ]»va³Ùp8466M7QÍMÁ‰ˆˆ ªªŠ´´´N—5+//'::ZýÅ*55U½Ñj6dÈVë;òóó¦{EQèׯŸÚoÜëõZýjÝ,44T#àðáÃlܸ‘Aƒµû%®9þôôt¢¢¢¨¬¬$55µÝãT^^NTT”º/ `÷îÝÔÔÔ´™¶·£ý¨¨¨ 44TÝnó¦F£éð=âR•––FZZcÆŒáõ×_Wp:ürÞ>^Mîœ]wË_¥;[ÖLQ”6‰—VñŸõë¦Ñh$))‰9sæ0gÎæÍ›Ç‚ ÐjµdggsüøqŽ=Ê AƒºµoÙÙÙêŒI]mÛçóuzsÞÞ¾x<žvËt´§Ý;{„¸˜ø|>\.W«ÇÙ×—ËÅÔ9KJJ0 ê¹FII 6›­M÷£ÑȰaÃØ¸q#jBÓb±Ð¿ÿ.ãëjÛ)))ìß¿›ÍF}}=Ÿ~ú)Š¢¨åm6_|ñ%%%8 Ôغª[§Ó‘‘‘ÁæÍ›[%ÏõxhµZÆŽË–-[8yò$~¿»ÝNeeåy¾k]Çp®ëµ'$$Ç×_~‰ËåâÈ‘#êŒ=éjF#C† áÓO?¥¢¢‚ÆÆF :¬/<<œˆˆvìØ¡&bŒF#)))t:>Lgçfwœkù`¾×]}v.äsy)ŸûB!Do’1½ÀYS‚9*®Oc8Urš´ô¶ã²œ‹ÚÚZÌf³ú忼¼¼Õ¯gEEE 4ˆššìv{«~úí-kXqèС$%%±qãF*++IHH ºººÓCbb" ?~œŒŒ >ŸƒÁÀ Aƒ(,,Äív«3#´ÜV{ƒ–••a2™Ô2-***HLL¤²²‡Ã¡î›N§Ãçó¡×óQjÞ—æ2¥¥¥øý~µeŽÙlÆf³‘˜˜Øá~$$$°qãFjkkÕ>ìz½¾Ë÷@ˆ‹ÅW_}ÕfÌ%K–´zîv»9zô([·nUdžÊËËSµƒ¦¸¸˜•+W’––ÆÜ¹s[•ÏÍÍeË–-|øá‡øý~ÒÓÓ¹þúë»_WÛž!!ÄÄD>ûì3êëëIIIaþüùhµÚ.놦äï|ÀÕW_}AÇcüøñèt:òóó±Ùl„„„0vìØ6­ïº«;±ŸËz퉎ŽfòäÉlÛ¶ÂÂBú÷ïßíÌ»ÚßéÓ§“ŸŸÏûï¿ÉdbèС&x233Ù±cG«.HYYYœ;ò¹¼”Ï}!„¢7u݉ºo¶ÙÑ:šv–i[,k~Þòoý™‡ 0f›Ív0c¦´d·Û9øìC¤ÿ± ¡Ä&†âjhÄik¤âšeôÏ]Ôí k½•}{÷1ò²Q]6ïŒ×ëeÓ¦M”——c±XÐétŒ9’¬¬,žyærrr¨¨¨Àl63uêTõf¨£e‡ƒÿûßÌž=›øøxNœ8ÁÖ­[Ñjµ$$$pêÔ)n»í6 õ@¸Íªªª(((Àëõb41b„z3ÿæ›oA^^@›m½úê«h4t:Z­–ÐÐP®¸â µ+PËí=ÿü󤦦ÒÐЀÉdbÚ´ij"¦°°S§N‘——Çk¯½¦–9uê[·nEQ˜:uª:Hyy9Ÿ}ö&“‰9sæPSSÓî~|ýõ×ìØ±CýUpÆŒ †ßñºººvTâbaµZY¹r%wß}w§­…ø¶‘s_!ÄÙŒFãÀx7à;óhî—8ëoZ<§Åë}ÉïΗÿà&º ‰˜ i™ˆ±{À«ø 5kIkîïIºæGÔ××ãp: Å¶Ýöz”slÖÐhh 4÷,S|>BÃà åà¡C >’ÐÐÐóÚ¿®´—(éβžòñÇ3pà@233{u»ââ ‰q±Û½{7§OŸæºë®ëëP„èUrî !„8Ûw1#]“‚(à÷sªÌA¥#€Í ‰ð5jHtVóõ×G©©©îõ˜“Ðh´­ºÏ|›¹ÝnJKK™5kV_‡"„í:räˆt+ßIrî !„2Xoи\.܇·Qí pÚ¾¸Ði¸Š÷ôI¦YiiqqñíŽòmtäÈú÷ïß­± „¢·Y­Vªªª¤ÅžøÎ‘s_!„h"]“‚¤ªªŠýL º¦›bMM„PÉŒsÖÃí–sžØâh8Ï­j)ÏšÙîl<FƒAo$4,ŒqãÆç6„¸ôH×$!„B!. Ò5Iœ7£ÑH })¾|Ê­ihz¸=à.:Ew¶[Nü Éýˆ·¨¨¨vët:¢¢¢Ôh…B!„BÑ·$$‘‘‘h¾÷s2Wo'3ÎǚʩétnàðÐÙŒ9‹ÅÒ3B!„B!DPI"&ˆ¦Ï˜Ájër²¾zøÆÃhµ|z3Mp{€ÙÌIH›Mö´ë% #„B!„B\B$d×ϛǗr¸®FÓ#3…††2aÀ"""‚^·B!„B!zŽ$bzÀˆ#ú:!„B!„B\„dúj!„B!„Bˆ^"‰!„B!„Bˆ^"]“„BôŠ@ ‡¦’B!„è¦`O¤"ÄùDŒBˆsvòE’1B!„è+¦Õ½ˆ$eD_‘DŒBˆÑòF'¨³— !„Bô¤æ„‹F£QÐt?"ÉÑ$#„"¨:JÀ(Š‚×ëÅï÷ã÷ûû0B!„B|—hµZ´Z-ƒN×*!Ó|ß" Ñ›$#„"hZ¶xi~ø|><Z­‹Å‚Á`@«ÕÊ B!z\ Àï÷ãõzq:¸ÝnŒF#z½¾MBFîMDo‘DŒBˆ 8; ã÷ûq»ÝDFF¢×Ë9B!„è]N‡N§Ãl6ãóù°Ùlø|>L&Z­V]O’1¢·ÈôÕB!.XË$ŒßïGQ&“‰èèhIÂ!„⢠×ë‰ŽŽÆd2áp8P¿ß/ãØ‰^%wÆB!.H{I—ËEXXf³¹£B!„h+$$­V‹ÝnWïWš»NKËÑÓ$dŠ¢àóùðûýhµZôz=:î;ƒâ»§9ãñx°X,’„B!ÄEÍl6£( n·“ÉÔjF%!z’tM "›ÍFCCFý 744`³Ù¾S1!¾;š[Ã47éõù|„††öeXB!„ÝÒ|ÏâóùÔ•@º(‰ž%-b‚¤¦¦³ÙLzZí7ù­˜èh*«ª¨©©!66¶Ïb¨¨¬ì•„ßgß (Š‚Çã!**ª"B!„8wáááX­Vt:]«qí¤‹’è)Ò"&qq±pöU£!66§ÓÙg1ÄÅÅðû{4!ÄwSskEQÐjµ †¾I!„¢Û Z­EQZµŠ¢§H‹˜ °ÛíÄDE5ý:´N„œ™Æ5"<œ’ÒRâââz$†ªª*ÒÓÒ:!**’Ú:+‹¥GbB|wùý~¼^¯tIB!Ä%)$$„ÆÆF_Sô IÄßïÇd6ððküMÍŒ48“M ø˜Í&feöX Q‘Nc0™L’ÝBEË™’šŠ¢`4û82!„Bˆsg4ihhhuo#3(‰ž"‰˜`8“ìðûü¿ú¡ øøýMsÓ÷tfµ;1!D0µ¼Yiž©M!„âR£ÕjÕîÖ-1BôIăFƒÍÞ@Td4ŠâCã×67F!hJ~8œØm =FXx$áaáÆÐÐP/!Dh¾q‘kŒB!.EÍ?b÷ÆèBH"&BBB8rø0cÆŒE§Óøi9™ˆ¢(TWÕðYÁ¢££{$†ºº:¦LžDˆ%¤Ã>BΠÁ´ßýîwlذ½^O||<¹¹¹Üu×]Ò%Aˆï¨–Ý”.ÄÒ¥K)((àwÞi3žÖòåË9qâ>úèm£§ÝvÛmÜpà \wÝu}ŠB!ÎQ°îi„èŠ$b‚ <<§ËÃÑ£‡é×ó7ƒáº\N @FF1±±46:HHHêö«ªª°˜MDEEát6‚FÛ*§ËÉÉâãø| aaa¼½yóæqï½÷âñx8tèüãQ…ÿøÇ\·âÒŒ›–ÆÆFž|òIüñ ªçÙgŸåôéÓ}âF!„IÀˆÞ"‰˜ Ðh4L˜0Í›7S^^ANö@ ©KP£ÓIb|"fs‘TVV¯6ã?צü-û,VWW«IŸ×GeU9s(MÓX1GŽ|׫0uÚ´ tÐëõ˜ÍfÌf3&Là†n`Ó¦M\¯BÌŸ?ŸuëÖ±eË&OžÜ×á!„¢n·§Ó‰ÛíÆëõªÓ?³«²F£A«Õb00™LX,L&SÐê¢/ȨŠA¢×ë™>}:­žä”4’SÒÐhµäço¥ªº’†z+‘„„X(--ÅårÑÐЀÇãéöv< ¸\.JKK[%al õTVU²qÓRR›bÐjµèôF¦åæ¢×÷LÞ­ªªŠÌÌof„òûý¬\¹’[n¹…Ù³góÈ#P^^À+¯¼Â’%KP”¦A…N' ,`Íš5x½^žyæ.\È÷¿ÿ}žxâ œN§Z÷öíÛ¹ûú꫹馛X¾|yì“¢o$%%qß}÷ñ§?ý —ËÕáz^¯—¿ýíoÌ™3‡«®ºŠG}‡ÃÀ?ÿùO^|ñEÖ­[Çå—_Οþô'~ó›ßðë_ÿZ-ïñx7nùË_Ô×'N¤¤¤¿ßÏË/¿Ìüùó™1c?ýéO)--U×½í¶ÛøøãùÉO~Bnn.Û·oo£ÝnçÆoä…^Æ¡B!.N§“ŠŠ ÊÊʰZ­8N¼^¯:fÜÙƒÞ^ˆæ™].õõõ”——SQQÑê;‚—IÄ‘N§k•¸úê«ùjQ«dLLt4999$&&’ššJcc#v»½Ëúív;¤¦¦’˜˜HNN111À7I˜}_àšk®iU.###¨NíØ±ƒÂÂB xì±ÇX·n‹/V—¿üòËlÚ´‰?üá¼ð Fxà¼^/·Ür Š¢°jÕ*uݬ¬,òòòX¶leee,_¾œ_|‘ÒÒRž{}´ÙøÍo~C^^ï¼ó=öÓ¦M Ú~ !. .$::ºÓDëOú—ËÅ{ï½4ýJýÖ[oñÐC‘™™IJJ K—.Åáp°eË ?ü0/¿ü2………|ôÑG<üðÃ@ÓØï¿ÿ><ðÑÑÑÄÇÇs×]wñÙgŸP]]×ëeÒ¤I„‡‡“‘‘ÁàÁ6ø°ââ£ÕjYºt)o½õGm³¼±±‘Õ«WóÐCCBB÷ÜsO§]$¯¸â l6›ZßÖ­[ùÿïÿaµZ9vìÐÔânÊ”)x<V®\ɯýkHjj*¿ûÝïhll$??_­óºë®ã†n ''³Ù¬¾øóŸÿŒÃáà·¿ýmŽŠBÑ·ü~?åååØl¶V ˜°°0’’’èß¿?YYYdeeÑ¿’’’ k•àŽÃb³Ù¨¨¨Àï÷­N!zƒŒÓ š“1|ðÓ¢¢ñš²ÄÍsÕû~ÒR“1:Ÿu(""¬Ý².·“½ûö3wîÜ^™:váÂ…êÀ¼‡ƒ5kÖ°lÙ2FEzz:>Ÿœœu}³ÙÌСC9yò$#FŒàÊ+¯ä‘GaéÒ¥êì(§OŸÆï÷sß}÷©ûáóùÔîýû÷gôèÑÜ~ûíLš4‰9sæ0vìØß_!DïËÉÉaÑ¢E<ú裼ôÒK­–8q¿ßÏwÞÙêZÑØØØa}aaaŒ3†;w’Í–-[øÛßþFQQŸ}ö™™™lß¾‡~˜’’|>_«D¯ÅbaĈ«¯9²Ým½÷Þ{ìÛ·uëÖÉlrB!¾5*++[µ‚‰ˆˆ &&¦Ýáôz=z½žÐÐPbbb¨­­¥¡¡­V«þ߬ï-.—‹ªª*ƒRŸ½A1½D£Ñ0eÊ**ʉ‡@FK ДIöú¼]&b|>/ŠÏצlyES§Ní•$ÌÙBBBX°`›6mbÏž=$&&ªÙñæV?F£±Õ’æi¼-–ofwjžÑiÅŠDœظ%­VË_ÿúWöìÙÃG}Äo~óFÍc=ÖS»'„èCwß}77Þx#ï¾ûn«×ÃÃÃX¹r%‘‘‘Ý®/77—ÂÂB¦L™‚N§£_¿~LŸ>·ß~›¼¼<***=z4_ýu·®c?~<ÅÅżõÖ[Üwß}ÝŽO!„¸XÕÔÔ¨IEQHHHèöÿÁz½ž„„L&•••­†Lf2¦¶¶V¶Aˆ‹tMêE!!!X­õx½EiJ¬( ^¯km-ee§;}XkkÛ-[om $$¤O÷-**ŠððpRSSÑh4ìÛ·O]æ÷û9tè:~ÎÉ“'Y½z5÷Þ{/ýë_Õñq ¡   Óm=š_ýêW<óÌ3P]]Ýs;&„è3f³™_ýêW<ýôÓ­>çÉÉÉ„††²yóæNË·Ï`Ú´iìÙ³‡üü|¦N À”)S8tè:°¯^¯'==€={ö¨eý~?`àÀ]Æ’’Âc=Æ+¯¼Òª+“Bq)r8jw¤sM´IBB‚:³¿›’ à+.’ˆéE&“‰˜Ø8öîÝ‹ÕZ‹ÃшÕZËÞ½{É/(d×î½>ò Û-׫S¸5%€¼x½^ؼy3{öì!77—òòòøË_þ¡C‡¨««cÙ²eDGG3~üxü~?üã¹é¦›¸é¦›ÈÉÉá™gžš²å7ß|3Ï=÷»víBQ*++)** ¡¡5kÖP]]Ëåâ‹/¾Àb±´ÛzFñí0iÒ$®¸âŠV­bôz=·ÝvÿûßÙ¾};Š¢PQQÁÔuÙ³geeeêMYrr2)))¼ð j"&,,ŒÑ£GóÔSO1eÊ )i~Ýu×ñøãsàÀjkkyòÉ'‰‰‰aâĉ݊{âĉÜsÏ=üö·¿åÔ©SÁ:B!D¯khhP[ŠFDDœW¦Ydd$ê¸1ÁÖÐÐô:…è Ò5©— 8 60ÌdÆãöÐh·S]SÇ‚ ºU¾½²£F÷î8)ï¾û®ú¥(22’òØc‘‘‘À<ÀsÏ=ÇÒ¥Kñù|Œ?ž'Ÿ|Fÿþõ/\.‹-àÁäŽ;îàÊ+¯d̘1Üzë­˜L&–-[FEEÑÑÑÜ|óÍ 4»ÝÎæÍ›yþùçq8¤§§óûßÿ^Æ`â[îç?ÿ9………­^ûáˆÉdâÉ'Ÿ¤¼¼œ˜˜n¿ýv† Àìٳٲe ‹-bìØ±üõ¯šZżøâ‹Œ5J­kÆŒlÛ¶I“&©¯=üðÃ,[¶Œ‡zŸÏÇå—_Îßÿþ÷sjB½dɾúê+~ñ‹_ðòË/·ÐW!„¸¸\.œN§šˆ‰½à:ccc©««C£ÑôÈx1n·»W¤â|ôþ "ÝÛfGëhÚY¦m±¬ùyË¿õg&À˜m6ÛÁ`6ƒk©¼¼œ´ÔÊÊN£øµ$%%ó:}U¿ßuuu$''÷ußjÍ×Ðæ3ŸÏ‡Íf#--­#B!D°ÔÕÕQWW‡Ïç#"""hß)ÊËËihh@¯×·À7"##‰ŠŠ:¯²§OŸ&<<½^N§k5Ó­è9F£qༀðy47› œõ7-žÓâõ޾äwçËÏ$: ]“„B!„B´p¹\M3µúýêÄÁ¦Ö‚:VŒÛíZ]BôIÄ!„B!„hÃãñ¨ƒô³‹­ÙlVí vO…³ëâb$‰!„B!„m4·XñûýèõÁ^T¯×«u[O ,D°I"F!„B!D+Í­Uz¢ÕÊÙõ ñ]#‰!„B!„mhµZ5Yâóù‚V¯Ïçë±$Ló»B\ÌP®×V IDATä,B!„BцÁ`Pÿv:A«7˜u­eÌB\¬$Ó¼^/h4h4´Zí9 (u!e…B!„¢»L&š3ß=¬VkÐêµZ­j½Áf2™‚^§Á&‰˜^f·Û Ãl¶`¶„ÐÀ@°Ûí=ZV!„B!ºK£Ñ`±XÔ„IyyyPº'ù|>ÊËËÕzƒŒ±X,A­Oˆž ‰˜^äóù°Ûí¤$'«FCJr2uuuX­Vìv{»«ÕŠÕjm·¬ÝnjŸM!„B!„0›ÍX,´Z-:ŽÒÒÒ ®³´´N‡V« zÆl6K‹qIDL/r8ètü¿:­šßïÇð“–šL\l Q‘í>âbcHIIj·¬^§Åápôå® !DY¶lY_‡pQ’ã"„¢§i4"##Ñétèt:ÊÊʨ©©9ïújjj(++Së v‹˜ˆˆˆ Õ%DO Þdð¢K~¿ŸÆF;ŠÏ–@À¢(x}^ c§å}>o»eíè»(+.Ü«¯¾ªþÈÊÊbòäÉ22»B!„øÖiN„„„Imm-ƒ¢¢" Dllì9ÕWSSCQQf³½^V«U[Å#.Ý’Ä%C1½Èívc4šZ °«àõz¨¯­¥AÛùX¿C‚0¶(ëÅ`4âr¹z.p¡š?>áááØívV¯^MLL Æ ëë°„‘üü|†NLLL_‡"„B\0­VK\\n·EQ0:tˆÔÔTÒÒÒÐë;ÿJéóù8}ú4%%%˜L&ôz}л&™ÍfùW\R$ÓKªªª ±•Œ×륾¾ƒÁˆÇãæèѯ9úõqBCC;­£±±‘Y ˜u&¡ã!$$Œ~éý¨oh ²²’„„„^ڣﶰ°0ÒÒÒdl!DåååäääôuB!ÄkN”hµZ’’’Øl6 i¬—“'O’žžNll,!!!jRÆçóáp8¨©©áÔ©SèõzL&F£ƒÁÐ*s¡É³ÙL||ü…í¨½L1A¦(J›çUUUXÌ&¢¢¢ðxÜÔTWsâäI¼^…°ð,XЭúwîÜÉöí;1ôôïר¸QQ1DžéYYYÙn ÁRYYIAA‡³ÙÌ´iÓÔäÏk¯½Fvv6‡bÒ¤I 4ˆ²²2>ûì3¼^/111TTTpÇw´©·³õ–/_NVVååårssIOOï2žåË—“™™IEE—_~9_ý5UUUèt:fΜIbb"§OŸfË–-¸Ýnbbb˜9s&!!!­bt»Ý”””ΩS§())a„ ]›;wb³Ù˜9s&Š¢°jÕ*¦M›Frrr»ÛµX,lÙ²…ãÇ£ÕjIKK#777hï¡£@ @~~>_ý5:ŽôôtfΜ 4uë\¿~=¥¥¥øý~fÍšE¿~ýhlldݺuÔÖÖ¢( Æ cÊ”)¼ôÒK 4ˆ0eʆ ÂÉ“'ÉÏÏÇívËUW]Eee%ëׯoÏÔ©S2dO?ý4ÙÙÙ”——·Ú6Ðn}¤´´”7ß|“¬¬,4 ééé\vÙe@Ó¸.&L`âĉ¬ZµŠÉ“'“œœLEE›7o¦±±³ÙÜêÕÞþ4s»Ý¼óÎ;\~ùådeeõÜ›$„â;K£Ñ ×ëIII¡ªªŠÚÚZ´Z-^¯—ÒÒRN:¥ŽcÙ¬y€_“É„Á`@¯×«ÿ6'b.Txx¸´„—$IÄ‘ÍfC§Ó¡7Ñj4ÄÅ%râä)ÂÃBÕ$Lc£ŠŠ2¾Ø÷Æ '22’¸¸¸nocüøñTWWc³Ùørÿ~F oºoNÆ4CÓØ*†ŠÊ*l6ááá´‡5kÖ0wî\bcc)..fíÚµ,^¼N‡Íf#22’[o½N‡ÛífíÚµ\wÝuÄÆÆròäIŽ?Þ¦Þ®Öóù|Œ;–¨¨(Ž9ÂæÍ›Y¼xq—ñø|>ÆGTTàã?fñâÅDDD°wï^¶lÙÂüùóq8|òÉ'ÌŸ?ŸˆˆvïÞÍÖ­[¹òÊ+[Åéóùؼy3áááø|>œN'ÅÅÅ :´ÓXÆÇþóŠ‹‹)))aàÀ$''w¸Ýœœ***X¼x1FZ݈ï„'NPVVÆ’%KÚ=ïGÍUW]EQQ6l`É’%X,fÍšEdd$.—‹7Þxƒ¬¬,’““ihh **Šþð‡èt:ëÖ­ãÆo$22’;vPPPÀ5×\ÃÝwßÝa\>Ÿ &ÝjÛÕwìØ1¦M›FRR‡æÀ\vÙeTUUÏáÇ™8q"n·›úúz’““ñx<¼÷Þ{Ì›7¸¸8Ž;Æûï¿ÏwÜ^¯o³?-ãû¿ÿû?F-I!„=¢e«€„„, uuu466âóùP¿ßO PË4'bš/Íÿ6ÒÛ²îse6›‰ˆˆ1aÄ%K1ARSSƒÙlf`Vš3©ˆÈ(†‹Àãq«õVT”±wß~òòfwÙŸ²#qqqÄÅÅ1`ÀÖ®]˰¡ƒ€¦dLLL ÉIÉ­b ¢²’šššsT«¥òòr¢¢¢Ô: ÀîÝ»©©©Q[¡´ü•¶¼¼œ˜˜uýÔÔTŒÆ¶ƒ wµžF£QYdÆ ÝŠ§e¹ììl¶nÝªŽ¤žÍž={Ôzùùù@Ó¸;íµ" ULj8|ø07ndРA]Ærå•W²råJâããÕÖOm7** »ÝN~~>jë!¾Í¢££±Ûílܸ‘¬¬,µÕ |Ó7 ''‡uëÖ©¯û|>¶oߎÍf£±±»Ý®–k9~Sii)lܸhJ,w§µ V«%::ºÍ¶»[_ff&Ÿ~ú)>Ÿ£G2~üxõÚPSSCff¦Z_tt´ºŸ™™™ìرƒššµUÌÙãQV¯^MJJJ«k¯Bl-“1†ˆˆBCCq8466ât:Õÿ €šˆi~4·€iÙ©»I˜æº &“ ‹Å"ST‹Kž$b‚ yê踸X8û‚¢Ñ ÓëqÚÔ$Ìµ×æw¦uÕ®½öZ5c4šˆŒŠn7†¸¸XN<…Óé<ïÌqóà\-y<5;~öÅÔï÷·›x9[w×kÞFóvºŠ§¥³_kùÜh4’””Äœ9sºC³ììl6oÞŒÃáè2–æe-%ël»‹/¦¸¸˜ƒ²mÛ6.\Ô©ý„¸ØDFF²dÉŽ;Æþýû)((àæ›onsÞ·¼TTT°~ýzfÍšEll,µµµx< ígÞd2‘’’Âõ×_ßêõãÇwÚ5©£mwTßÙôz=ýúõãôéÓœ8q‚ñãÇc·Û9räõõõ :hÿ:ØòÒÞuM£Ñ‘‘ÁÁƒ™0aB·¯£B!ÄùhÙŠ¥ùFhh¨Ú¦e‹˜æJˤ̅¶„âÛBæÝ »ÝNdDDÓ…çÌÅGu悤Ñh)ܶ“©S§ár¹°ÛíAy4662uêTvìü½ÞÐi QQ‘êàZç#))‰òòruÌ•æñ:ê—Ù¼~ee%ÕÕÕê—$EQسgn·»Óõ‚OGihhP»CµuJsŒí)++Ãd2Þe,Ÿ|ò ×^{-!!!ìß¿¿Óíz<Ün7YYYÌœ9«ÕÚa B|[¸Ýn\.ÙÙÙ\uÕUÝ:ïkjj°X,$&&¢( ¥¥¥­ºí´”””D}}=ÇŽ¾ù¼eddp÷Ýw·ytÕ¤£ú, êº999ìÙ³‡ÈÈHôz=9999r„òòrÒÒÒHNN¦¬¬ŒòòrJJJ]¶b;v,©©©¬Y³¦Mß|!„"ØZ&R´Z-z½^ûÅ`0`4Õy›ÇƒižªZ’0B|CZÄßïÇd2ððküMÙ-¦ì°?€Á`à–›oî±núÁ¢¦,t'1˜L¦ ºQ·X,\uÕUlÚ´ EQ #//¯Ã¶šÇoذaƒÚµÀ`0M_ºöîÝKZZñññ®Ìx:b0˜={6ìܹ£ÑȈ#HNNn#Àþóµiehh(yyy]ÆòùçŸBFFIII¬ZµŠ””¢££ÛÝnXXÛ·o§±±EQ˜0af³ùœöIˆKMmm-………ØívEaâĉ]ž÷äĉ¼òÊ+X,RSS;LÄ ®»î:6mÚĶmÛ0\vÙedggŸW¼Õ7vìX6mÚÄ—_~ɼyó0`|ðÚú-$$FC\\œz3j±X¸öÚkùä“OÔkÈܹs»u=›>}:ï¿ÿ>7ndÖ¬Yçµ?B!Dwµ×ZP[ÃtµžúâÓÐmv´Ž¦eÚËšŸ·ü[æa €Ùf³<ûBq!ÊËËIIND§Ó£ÕêÐh›šâ©‰¿‚Ïçëð B°(Šr&ãÜq eå$%%õhilläƒ>`Ñ¢EAYOˆŽÔÕÕ‘œœÜ×a|«5_Cý~?ŠÒt}±Ùlj ÿŸ½;ª¾÷?þš%³d_ kÂ.ˆe‰l7¤¨€P©­þ¬^«^[µ÷j+¸{[j]h]êÖV-R7dU¡VY-BÈFöÌd¶3ç÷GœiÙ€Iú~>ó03çœï|Ï$fÞóù~¿"""òýÒRs28pàIIIG¬ìt2žËÉÄáp |@ð¡oo‘*ó°Ÿ©wŸz7õ!¿5þc´‚*bbÀb±PYYIZZ:†Â¶FŠQ0ͺ¿¯×CMMU -ŸÄ¤d’“›ìCUUe»_Djjjp¹\Øív¶mÛFïÞ½k?9ñ(¬i=11àv»ù׿vñƒœÍfÃ4à ¦i1 ƒ/¿ÜÊþùm¶ÄZmm-={œÂðág6Ù‡]»¾¢_ÿmòüMÙ»w/[·nÅ4M²³³=zôqí'""""""r2SIIIøýA¾új'={õÆíúwØRë«å›½{‡M¦M›ÖfI±išlüøãfû ÕÍ;ОN=õTN=õÔ˜í'""""""r2S‹…ágžÉšÕ«)..!;+“„ÄD<55„3vl›–ë}‘æ)ˆ‰»ÝNÞ¹ç²gÏöççãóùp¹\tëÖÞ½{·ùD½'JDDDDDDD¤i bbÈf³‘››Knnî÷º"""""""Ò8kË»ˆˆˆˆˆˆˆˆH,(ˆi' bDDDDDDDDÚ‰‚‘v¢ÉzED$fÊÊÊ:º """""'41""3éééÝ‘câõz;º ò=¡¡I""""""""íDAŒˆˆˆˆˆˆˆH;Q#"""""""ÒNĈˆˆˆˆˆˆˆ´MÖ{1 Ã0‡Ã˜¦ €ÅbÁjµb³Ù°ÙlÜC9 bN¦iâñxذa«W¯æË/¿Œ.›‘‘ÁàÁƒ7n#GŽ$!!‹ÅÒÁ=‘c¡ ¦ƒ¶nÝÊoû[¾üòK‚Á`ƒŠ˜ŠŠ öìÙÃ{ï½Ç!C¸ù曟Ã0¢! ÔUˆßïgóæÍüìg?cÕªUø|¾칈ˆˆˆˆˆˆ 1$ÂüêW¿¢¤¤„p8Üâ1áp˜’’î½÷^–-[Fmmm;ôTDDDDDDDbEC“:@$„ùõ¯MUUÕQ_UUÅý÷ßÀ¤I“p»Ý±î¢ˆˆˆˆˆˆˆ´UÄ´³£ ašš˜·ººšx@ÔDDDDDDDN" bÚÑÑ„0‹…2nܸ&تª*î»ï>V®\©0FDNzwÝu=öXGwC¾#f̘ÁóÏ?Ò¶/"""ß] bÚÉÑV˜¦É®]»øøãLÞ{8…1"ò}õä“Or×]wut7äuî¹ç2`À€˜´ÕØßZ,Û‘ïÍÓZÂX,–#Ã0ðz½-¶_UUůýkB¡æŒn¸á†“º}‘“ßï§¶¶¿ßO0Œ®ÛTEÿ±°X,X­Vâââp:¸ÝnœNgÌÚ骈ic­ aœN''NÄf³óóDæŒiëʘ{ï½—±cÇ2vìXÆÏÌ™3yâ‰'­ncΜ9¼üòËÑû×]wï¼óN“ûƒAÆŽK~~þqõ]DN.³gÏæÙgŸåºë®#//Y³fñü€^xgžy†÷ߟ#Fðàƒu׋ßþö·\tÑELš4‰ùóç7´gϞͲe˸馛ÈËËcãÆ-öáÕW_öaΜ9lÛ¶­ÅöÂá0Ï=÷—\r ãÆã¿þë¿8xð`ƒ¶_yå¦OŸÎøñãloé6lØÀìÙ³=z4?üáyüñÇ[µípM=K}Ÿ={6Ï<ó óæÍ#//«®ºŠmÛ¶ñ—¿ü…Ë/¿œ¼¼•••RTT¤d夦 ¦ µ6„¹úê«ùÑ~ÄСC›L- ‹…””âââݧªªŠùóç³bÅŠ6 c¦M›Æ²eËX²d ·Þz+Ë—/çé§Ÿnõñ£G¦_¿~mÖ?ùn¨¨¨à‰'žà¦›nâ7ÞàÔSOåŽ;î  2{öl®½öZ&OžÌƹãŽ;xøá‡ÉÏÏç…^àå—_&??Ÿßýîw Ú½óÎ;ÉËËãø§vZ‹ýx衇¸á†xíµ×:t(7ÜpÕÕÕͶ·hÑ"V¬XÁC=ÄK/½„Ãáà'?ù Á`¨ûpÿöÛoó«_ýŠ¿üå/œþù¤¥¥µxUUUÜ~ûí\|ñżûî»<ú裌?¾Åm‡kîù[ê{EEO>ù$?ûÙÏxã7èÑ£³gÏfÿþý<ôÐC¼øâ‹8p€ßÿþ÷ ~—G{LKšûû8šsŽ‹‹£{÷î<òÈ#¼úê«L™2…{}ûö4ù·v¸Ö¼nMõ÷h~w""­´´4„DBÃ0‡Ã n‘Çê2ÇÊDø|>Š‹‹)++‹I{"íMAL9šæòË/'77—¼¼¼Fƒ˜¤¤$òòò¸å–[xðÁ™7o^“åxíÆØív\.ÉÉÉœuÖY\zé¥|þùç­>þG?úgžyf›ôMD¾;RSS¹ë®»8õÔSIOOgîܹ”––²ÿþF÷÷x<,Y²„Ûn»ôôt233ùÉO~‡~Ø`¿©S§r饗ү_?\.W‹ý¸ûî»6l™™™ÜrË-¤¥¥±lÙ²&Û ¼ôÒKÜyçäææÒ­[7î½÷^<kÖ¬Á0 ž}öY~ñ‹_0pà@233™}:999tëÖ«¯¾š®]»²uëÖV÷åh^·ÆúÛÚ߈HG ‡ÃR]]Ý €ILL$;;›ž={’““CNN={ö$;;›ÄÄÄ ³0êF‡cÖ¦H{Ð1màhC˜N:‡9ýôÓØÏb±0hÐ n¸áºwïNRRýû÷àÙgŸÅï÷qL$Œ˜0aB«>h’’úôé½?mÚ4î¾ûnÎ8ã vîÜÉ7ÞÈòå˺¡HS§Nå /l´=Ã0xæ™gøàƒ‡ÃŒ9²Áö`0ÈþðV­Z…ßïg̘1ÜxãÑ7Ô×]w—_~9K—.åË/¿ä׿þ5Ço‹S‘6fµþûû‚®]»âv»›œ;kß¾}„Ãa®½öÚh¨ …ðx< ö:tèQõ¡~@nµZ:th´Z¢±öòóó …B &ru»Ý 2„½{÷’ŸŸ×ëmôƒvKçлwo†ÎŒ33f S§N嬳ÎjqÛáýkêù[ê{ý×!"rý÷z½¤§§GûrøïéXŽiIkÿ>š;g¨«VYºt)ÿøÇ?¨®®æÀGõeƱ¼nõû;hРVýîDD:Rqqqƒ*˜äädÒÓÓ±ÛüHi·Û±Ûí$$$žžNYYUUUX­Öè¿o±šGÆçóQRRBVVVLÚi bbìXB¨{s–™™Ùd»‘ sçÎ̘1€çž{®Ñ7‹mÆ|òÉ'|ôÑG†Áš5kX³f ‹-ŠYûO?ý4›7ofÁ‚¸Ýnž{î¹Û.\HEE‹-" ±`Ážzê)n¹å–è>÷Üs·Þz+?þñ9å”SbÖ7éXͽi‹\#_zé%RRRZÝf `̘1 [´hQ“Öl6[³×Ô@ ý–°þo‡ÃÃá ¦¦¨ûfñð¹ÁZ:«ÕÊO<ÁgŸ}Æ[o½Åí·ßÎðáÃyôÑG›ÝV_sÏßRß[ëXÞ\Çâ ySm4wεµµÌ;—ñãÇóãÿ˜ììlæÍ›‡a­~Þc}Ý"ýmíïND¤£”––FCÃ0ÈÌÌlõ¿µv»ÌÌLœN'ÅÅÅ ®Ã± cÊÊÊ¢á¾È‰NC“b¨µ!Ì5×\Ó „º7‡õç¨Ïáp …”ÜuîÜ™™3g2oÞ¼&WIŠ,m½lÙ²˜Nfµoß>î¸ãî¼óNÞ{ï=|>o¾ùfLÚ¼ñÆÜ~ûíÑòîÛn»-ºÝãñðÖ[oqóÍ7“––FçΙ7ok×®mÐÎE]ÄÔ©SÉÍÍmóŠ é8õçéÒ¥ ¬^½ú¨Úp8lܸ±Á-Â:tˆÅ‹7ØëÖ­äää4Ù^÷îÝزeKô±p8̶mÛ¢×µp8ÌöíÛ8¶µçpÆgpÏ=÷ðì³Ï²zõjŠ‹‹[µ höù[ê{{r»ÝìÙ³§ÁcÇZzÞÜ9oß¾ŠŠ nºé&úôéC||<»ví¢¨¨¨Á~MÍ=±{ÝZú݉ˆt¯×Žt´!L})))dffFWV‚ØSÒ¾r²P#GS 3sæÌ! Ô•žïرãˆcLÓdëÖ­üþ÷¿gÆ Ñoõ:uêÄôéÓ™;wn“sÆ´ÅjJÓ§OV¼÷Þ{Üxã¼úꫬ[·î¸ÛÎÏÏÇ0 úöí}¬~j~àÀÂá07Üp3gÎdæÌ™üÏÿüÏ¥èƒ>ȉ-++‹-[¶PPP@mm-v»Ù³gó»ßýŽ7bEEE V9:Z.—‹­[·òé§ŸRYYÉ¢E‹ðz½ÍN¤ÏÔ©Syàضmeee<òÈ#¤§§3räHRRR7n>ø ûöíÃëõ²fͼ^o‹çPUUÅ›o¾Iqq1>ŸÏ>û ·ÛMjjj³Ûêkîù[ê{{:í´ÓøûßÿNAAùùùÌŸ?¿Ù0¤9Íszz:555¼þúëTVVòÁuC‡"ÿ[;Üñ¾n­ý݉ˆt„ªªªhÕ_rrò1…0)))$''G牵¦>‡‰œh44)Žu8R}µµµ¬X±¢ÑT¸¼¼œ×_%K–pÚi§ñØcE/€ÑaJÍÍsß}÷aš&'NŒi…H||<—]v~ø![¶laôèÑÀ±§Û‘ÊŸp8Ü ¼;"11€?þñ$''{ÇEä¤wá…²~ýzfΜÉgœÁÿýßÿqÍ5×àt:yä‘G(,,$==9sæóħ‰‰‰üÇü<ð‡bèС<ýôÓM®^qûí·³páBn»í6B¡#FŒàw¿û]´û—¿ü%>ú(óæÍ# Ò¯_?úöíK|||³çP]]ÍÊ•+yüñÇñx<ôìÙ“|‡ÃAIII“Û×Üó·Ô÷öróÍ7sï½÷2sæLºuëÆäÉ“›œ¨¹5š:ç^½zqÓM7ñôÓOóÄOpÎ9ç0nܸÇ6ö·v¸ãyÝšû½Šˆt$ŸÏGmmm4ˆÉÈÈ8î6322(//® ±¢ä÷û›ü’ZäDѾïªZÿœMícid›µÞ¶Èýú?Û¿½98ÀU]]½=Vep@€•+Wò«_ýê˜C˜`0ÈG}Ä-·ÜÒha±X˜Ê~ð î5ž8q"þóŸÉÊÊ⢋.⦛nâ‚ .h´-M,ß}åååtéÒ¥£»ñ¹†FÞ˜…B!ª««¿ss2Íž=›K/½”©S§vtWDDDÚ]yy9ååå„B!’““ÉÎÎŽI»………TUUa·ÛLà )))Ç\QxàÀ’’’°ÛíØl¶èÃíýeÄ÷Ãáø€ àBßÞ"eSæÍe\ IDATa?Sï>õoêC~k>üÇnœ\+hhÒq0 ƒ/¿ü’|ð˜C˜P(Ä×_Í<Ðlu€sÎ9§Ñ„72oä›ÔÆTUUñàƒòÅ_Õ$„‡3 ƒ`0H0¤ªªŠÕ«W³eËòòò2dï¼ó………ùdt_»ÝάY³xê©§Ø´i†aP\\ÌÎ;ù|DDDDD¤!Ó4ñù|ÑjõHez,$&&FÛ5M3¦sÅ´ô™JäD ¡IÇ¡²²’ßüæ7:t¨Ñí‹…ñãÇ3eÊÒÒÒ0M‹Å]òÍï÷³iÓ&zè¡FË­- qqqÑ#55•áÇ7ºD4\M©©Ê˜ÒÒR~ó›ßðÛßþö˜g_¼xqtòÊ””rssY°`½{÷àúë¯ç`îܹtéÒ…‰'’ŸŸßd{3fÌà‘GaÏž=ÌŸ?Ÿ›o¾™ÇœŸÿüç$''sþùç7¨n¸êª«p:,\¸¢¢"ÒÒÒ˜5kVtYo9~@ :Io,§7p¹\†Íf‹~FŠ•cOL¤=ihÒ1 ƒ¬X±‚Ÿÿüç„B¡&÷s:Œ5Š &0dÈRSS)//gëÖ­¬\¹’ 6D—‚kp¢ ÇçÒK/eçÎ|ñÅdeeñ¿ÿû¿ÄÇÇG÷«?Imäñ–†)Ùívî¿ÿ~&NœØâ<"'# Mj{š$""òÝfš&{÷î% â÷û2dHLÛÿâ‹/p:1žd±XèÑ£Ç1«¡Iãû84I1ÇÈï÷³råʇøøý~V¯^ͺu뢘HEŒaMŸ‘‘ÁÕW_Í9çœÃÙgŸMii)‡£A5Lii)]t¡P»ÝÎÛo¿MFF;wfÚ´i„Ãaž{î9@ƒ¶ Ã`åÊ•Œ3FAŒˆH3^xᅎˆH‡ˆ ŠõСÆÚù¾Ñ1Ç( òÏþ³UÃ0ÑYÇ}>@ ÉÆjµ2uêÔè0¤ŒŒ zöìIyy9÷ß?%%%Ñ}=µµµx<žèc%%%üá`À€Lž<ùˆ×4M¾øâ •퉈ˆˆˆH“¬Vk4,inÀÑ …BmÂ4¶òªÈ‰F¥ÇÈ4MÊËËÛ¤íp8ÌG}Øï÷óÆopÓM7±dÉþð‡?PYYyİ#¿ßOee%Ï<ó K–,áž{îÁår5ZJWVVF8|x5—ˆˆˆˆˆHúÕóµµµ1k7–mNÿr2ÐФÔÎ;yþùç¹é¦›°Z­”””PYYI8æõ×_Çf³ñÍ7ßDSdÓ4™?>={öäµ×^# R]]ÝäEN%€"""""Ò§ÓIMM ‹…ŠŠ ’’’bÒnEE‹¥Mæ^ijY‘‰*bŽ‘ÕjmöB”ÍÀ±ÛíM^`"«" 4ˆìììû…Ãa6lØ@MM N§“É“'3pà@, @€¿üå/¬[·®A³nÝ:þüç?ã÷û±X,äææâv» ]’““U¶'"""""²X,¸Ýîh`RXX“áI¡PˆÂÂÂh»±cÜnwLÛi ªˆ9Fv»¾}ûRTTÔèŠGyyy\xá…ñå—_òÒK/5˜Æn·sÅW0dȺwïΗ_~ÉÃ?ŒÏçÃjµ2|øpfÍš…ÍfÃï÷Ó³gO¦L™ÂöíÛ1M“`0xÄ…+2pD=Xºti£ýëÛ·¯ÊöDDDDD¤I.— ·ÛM0Äf³qðàÁc^‘(âàÁƒÑ‰b¸\.UÄÈIAAÌ1Š,K½~ýú#‚Ó4yçwøÁ~@^^¹¹¹¼òÊ+ B«ÕÊ´iÓèÕ«v»®]»²k×.Þyç~øÃrÁpèÐ!.½ôR†Ê™gžÉ»ï¾}.§Óɸqã9r$ééé”––òñdzjÕ*¦i²zõêF'äµX,Œ5J)9),\¸›nº©£»!""ò½c±XHIIÁãñ`³Ù((( !!ŒŒŒcj¯´´”‚‚\.6›-æ1ÉÉÉ1kK¤-)ˆ9Fqqqäååñú믳{÷î#˜ššæÏŸÀé§Ÿ~Äñ‹…´´´èrÔiiiÌ›7#F0lØ0øÛßþFiiitùëÈìâ.—‹ë¯¿ž &ÓéÄï÷3|øpúõëÇÓO?M h2„éÓ§yyyªˆi†×ë套^âŠ+® !!¡£»#""Ò®"I||<)))”••ÇÎ;éß¿ÿQ‡1¥¥¥ìܹ—Ë…ÝnÇjµF«bbÆ$%%iX’œ44IÈqèÚµ+sæÌiò zUUóçÏgÍš5 ÆA6v±éÒ¥ çž{.™™™†Á7ß|ƒÅb!‡ÃX,&L˜ÀÅ_L¯^½¢«"¹\.ºtéÒâ1>>ž9sæÐ­[·ãDD¾ÃÜn7&L >>¾£»"""Òa¬V+:u"!!»ÝŽÃá`ÇŽìÝ»·UsÆ„B!öîÝËŽ;p8Øíö˜Mr¹\¤§§Ç¤-‘ö Š˜ã`³Ù˜0a………üñ V<Š„0÷ÝwUUU¶ a¦OŸ³eçbiÓ¦M 0€!C†‡;º;GøÓŸþýÙ4Mrrr5jT‹+Oy½^þú׿2sæL}«.Ò Ó4Y³f »wïÆf³Ñ½{wÆÔMD¾|ùrKÿþýÙ¶m£GfàÀ|óÍ7¬Y³¿ßOFF“&M¢¸¸˜åË—ÑŸ1cÆ0pàÀóÓ<ýôÓäææ’ŸŸišäååÑ«W/JJJøðÃñx<ÄÇÇsá…j8“ˆˆ|gX,–è¼–%%%”••aµZ ƒZ.—‹ääd½Ç–“–‚˜éܹsLتª*î¼óN6nܽ¸AÝ·Æ|ðýû÷Çn·³jÕª“>„¢óß­¢¢¢v:˜˜È)§œÒª1±‹…Þ½{·C¯DNniiiÔÔÔ°jÕ*rrr,›Я_?Þÿýèã¡Pˆ7R]]Ç㡦¦&z\ý ôàÁƒx<V­Z@ h°’]kX­V233º9½RRR(..Æ4M£Ûô¦PDD¾kê‡1‹…äädðz½x<jkk£ÿ¶š¦ b"·HLýáH­}ïi+..§Ó‰ÛíÖê¯rÒSC± c"e|>Ÿ/z13MÓ4Y¼x1Æ # ²`Á‚v aŠ‹‹Y·n^¯—ËÅØ±c£>^|ñEúöíËŽ;8ûì³éß¿?¬]»–`0Hzz:EEEÌ;·A›ëׯ§¤¤„W_}•ôôtfΜÙ`»ÇãaÅŠ”——cäì³ÏfóæÍð·¿ýÞ½{sþùçóì³Ï’““ÃÁƒ1M“Ñ£GG‡04ÖF}~¿Ÿ7ß|“áÇžøý~òóóIJJbÿþýäççsÖYgu•K¯½ösæÌàСC¬ZµŠéÓ§MÏ SPPÀºu뤦¦6XåêÀ¬_¿¿ßOzz:ãÇ'>>¾Ñ×Xä» %%…«¯¾š¯¿þš­[·²nÝ:fÍšuÄ›´úoÜŠŠŠX¾|9&L ##ƒ²²²èY‡WÖ9NºvíÊøÃïÙ³§Ù¡Iõ5Uríõz¾ˆˆÈw^ý*–È-11‘„„„h5LýŠ˜H€R?”9ÞJ‘ï 11«0ÆétröÙg³víZrss4hü1ûöíÃãñð¿ÿû¿ ¾ý=üøX‡0@€wß}—)S¦‘‘ÁÞ½{Yºt)W^y%6›êêjRRR¸êª«°Ùløý~–.]ÊÔ©SÉÈÈà›o¾aÏž=G´;jÔ(<ȸqã¢ßz×Þ“œœŒÏçãµ×^£wïÞüà?`ß¾}œsÎ9deeuóå <˜¼¼<ŠŠŠxë­·¸êª«šl#;;¨›PìÝwßeèСV°„B!V¯^MRR¡PˆÚÚZöîÝË AƒŽùµ|ï½÷¸øâ‹£¯Í¾}û€º`çƒ>à’K.!99™Ï>ûŒ 60qâÄ#^c‘ï ¿ßO(¢oß¾ôêÕ‹E‹á÷û›­,--Åív“••…ßïçàÁƒÑ!އËÎΦ²²’¯¿þš>}ú`š&¡PˆÞ½{·zhÀöíÛ8p ‡¢¦¦†ÌÌL|>Ë—/§¬¬Œôôt‚Á v»]o2EDä;'òåpýp%ÀDB˜úûÖÿE!ŒÈ¿)ˆi±cìv;'N$33“ÌÌLRSSéÞ½;>ú(¦i6À@Û G*,,$555ºÚS¯^½øì³Ï(--VÅÔÿ¹°°ôôôèþݺu‹® u4"Ã6mÚDuuu´²1‹%ædee‘œœLIIIt(QSm¼ýöÛdgg7Ya’#`×®]¬Zµê˜+R IKKkôµ),,ÄëõF—=ƒ †Pþ-½ÈwAYY}ô555†Ñª‰ÍsssÙ·oÏ?ÿüðC>þøc§v}ûö=ª~îÛ·O>ù§ÓÉ”)S°Ûí$&&2qâDÞyçâââp»ÝLœ8Q“õŠˆÈwRcÕª@£ALs÷E¾ÏÄ´‘Ö†1÷Ýw†a0iÒ¤#JÛSRR=z4V«5ú!åð ÜáW]u3gÎŒùœ0†a¤è€Ã/®ápø˜‚—ójÕ*Î=÷\ÒÓÓ)//or‰îÃ_ŸÈ„`-µÑ«W/vîÜÉðáÉ‹‹k±O}ûöeõêÕx½^l6ÛQ¯ôÔØkáp8ÈÎÎæ¢‹.:b›þ“YýoÉŽV—.]¸ä’KÝYµ(â§?ý)P÷ÿÊùçŸßªc nrÁÈu¹µê·cµZ9ï¼óݯoß¾GꈈˆœÌZú÷þd{ßz¬ïaDŽÅñ¯&MŠ„1×\sM“JUWW³`Á–/_Nmmmƒm‘’?ŸÏÇo¼ÁÇÜlãp8˜3gÿùŸÿ­P‰¥ììl )**ˆ.%ÛÔ’q‘ý‹‹‹º¹S"á‡alÙ²¥Ñ€ ê”Èd¸eee¸\.:wîŒaF¿õv¹\TWW78vçÎ@ݰ…šš:wîÜlÆ £k×®¼ÿþû„ÃáûWPP€Óé$)) ·ÛM0¤  ¨«h9¼O‡ŸWs¯MVVUUUÑa\¦i6˜?FäDS¿Ôøh'À‘ï†úC‘NÆ@Ã0 Ÿ’v£Š˜6֚ʘššxàl6[£Ã”;vìhöNd8ÒÌ™3Û$„º¹Z&MšÄ‡~ˆa$&&rÁ4¹ÜtdiÙ+VDW=‰T›øý~>ÿüsN9å”F+wÌòåË9÷ÜsÉÉÉaÿþý¼üò˸Ýnºté QN?ýtÖ®]˶mÛ¢$û÷ïgÓ¦M¸\.Î?ÿ|ìv{³mDŒ=š¥K—²víZÎ<óÌ#ú÷ÆoDg|OHHà‚ .ê.ÔãÆãý÷ßÇív“––Öä„!C†°xñb.¸à‚¯Mff&‰‰‰@ÝŠ /¼uëÖñé§Ÿâp82dH»¯%r4, 6›@ €Ý®ZDDDää,­-Ò–:⯬5ÏÙÔ>–F¶Yëm‹Ü¯ÿ³ýÛ›ˆ\ÕÕÕÛ[âk‘Uš c’’’øÅ/~Áĉ£Ã”|>«V­âž{îÁëõ6z\[WÂÄŠÇãáí·ß>bU¤Xjj…"ù~)//§K—.Ýï´È5Ô4M ÃÀ0Œè²•'òuHDDD¤1ÅÅÅØl6GtzUÈ´‡Ã1ðAÀ„¾½Eæ0û™z÷©÷xSò[óá¿]}mÙNZSS]]Íý÷ßO~~~´ºã­·Þ⥗^j2„iJ˜ãQSSƒËåÂn·³mÛ¶FW$‘“[d¥ÍfÃçó [5×’ˆˆˆÈ‰   q8 –Ùi+ bÚQkØE‹ñì³Ïb±X¢…Æ´ÕêH±´wï^¶nÝŠišdgg3zôèŽî’ˆÄXd,¸ÕjÅápPVV]R^DDDäDWVVÖ „Q#mMC“:@k†)µädŽ$Ò44©}Ôž‡ …B„B!|>‰‰‰ÑåÞEDDDNTÕÕÕ ªøív{ƒª…2mïû84I«&u€Ö¬¦ÔœHsùå—+„‘Bd²ÞÈØêÊÊÊ&‡TŠˆˆˆœ¼^/•••Î #Ò–44©ƒD‹Š/¼€ÇãiviêˆÄÄDfÏžÍe—]¦FDNõ¿1²Z­ØívÜn7eee„B!’““;¸‡"""" UUUQUU…ÛínP£¡IÒÄt Î;sùå—Ó©S'^yåvïÞÝdc±XÈÉÉaÖ¬YLœ8‘ôôôvî­ˆHC‹¥Á5+ʦ‰ÍfÃívSSSƒ×ë%==‡Ãѽ©[¦º¬¬Œp8ŒÛíÆf³aµZ¤WŒ´1,==)S¦Ð¯_?>þøc6oÞÌîÝ»©ªª 99™œœÎ8ã FŒÁ€p¹\Ük‘:‘0¦~ULý²^§ÓI(¢°°‡ÃArrr´üWonDDD¤­™¦‰aªªª8NœN'6›­Éj½O‘¶¤ÉzO •••:t(z¢\:uêDJJJ÷Pää ÉzÛWýëidâ^Ã0‡ÃÑÿ†B!‚Á áp8ºˆˆˆH[‹T¼ÄÅÅEƒ—H%ŒÍf‹îS?|QÓ~¾“õª"æ’’’¢°EDN:õ‡(E†'…ÃáhÕ‹Åb!Gç1M3ziKõ+]"Lý(„‘ö§ FDDŽ[caLD$˜‰T˨FDDDÚ[ýy`ê0€Biw bDD$&cLÓlÈÑÉ|U #"""íåðù_ê¿?Q#AAŒˆˆÄÌáa Ð ‡Ãz“#"""¢©¦±û"mIAŒˆˆÄTýæðû‡WȈˆˆˆ´'0r"P#""m¢~uL侈ˆˆÈ‰BïM¤£(ˆ‘6Sÿ Žæ…‘ަðEN bDD¤]興ˆˆh°¾ˆˆˆˆˆˆˆH;Q#"""""""ÒNĈˆˆˆˆˆˆˆ´1""""""""íDAŒˆˆˆˆˆˆˆH;Q#"""""""ÒN´|õ Ì4M ÃÀ4M¬V+6›­£»$"""""""ÇAAÌ È0 ¼^/¡@%ÖðWXÍBt…¸>¸Ýn\.WGwQDDDDDDDŽ‚˜LMM žêÏÉJþGj-‹%ºÍðú¨(îBaÜdewm°MDDDDDDDN|š#æRQQá{‡îYoãtûŽZlñ.2N)'+îöïÛN8î žŠˆˆˆˆˆˆÈ±Ps‚¨­­%ä]Gfú,@qIGþ¯€Ëf}Åä‹wðã¿æ½å¸Òéžø4íÞÏ{ï½—±cÇ2vìXÆÏÌ™3yâ‰'­ncΜ9¼üòËÑû×]wï¼óN“ûƒAÆŽK~~þqõ]DDDDDD¤£ihÒ ¢¬¬Œ^Ö6öpó­{)«bš&¦i²mG€­Û«Ù¹ËÃÍÿ¯®ôxâ >À㹌„„„víë´iÓ¸þúë ìØ±ƒûï¿Ã0øéOÚªãGM¿~ýÚ¸—"""""""'UÄœ|>NóXãêVEzøÑ””ú‚”*£¤ø—P(Ä+)`ó–jÒ>Åãñ´{ív;.—‹äädÎ:ë,.½ôR>ÿüóVÿ£ýˆ3Ï<³ {(""""""rbRsðz½Ä[7uC’6ý£ŠP(DEe%¡Õj%   …B¼³´g‚ó„˜'¦¤¤„>}úDïO›6Ï>û,zçÎLš4)z¿¥¡H†a°hÑ"f̘Áe—]ÆoûÛÛƒÁ O<ñÓ§Oçâ‹/æá‡¦¶¶¶Aû+W®äöÛoçüóÏgÓ¦M±8M‘㦡I'€`0H’½H¦°0@(Â4MvV§›Í†ÍfÅAøê´v̯ï“O>á£>Â0 Ö¬YÚ5kX´hQÌÚúé§Ù¼y3 ,ÀívóÜsÏ5ؾpáB***X´h¡Pˆ ðÔSOqË-·D÷¹çž{¸õÖ[ùñÌ)§œ³¾‰ˆˆˆˆˆˆUÄt0¿ßO(°„ø YYq„B!B¡NW ññÄÇ»‰w2BC!²:}ÀÁéó¾}û¸ãŽ;¸óÎ;yï½÷ðù|¼ùæ›1i;ðÆopûí·“››K·nݸí¶Û¢Û=o½õ7ß|3iiitîÜ™yóæ±víÚí\tÑEL:•ÜÜ\\.WLú&""""""r¼TÓü~?¥%ÿ¤gößÁ_÷XV¦ƒa§&ðéæ Œ =ÙŽÕf¡²¢¯×‡iš\xaa_E‡ô{úôéщy½^/ï¾û. .dذaŒ=ú¸ÚÎÏÏÇ0 úöí}Ìf³E>pàáp˜n¸!º¼w(Âëõ6hgðàÁÇÕ‘¶  ¦ƒDB˜YK°ÙÂàL Õb±»ùŸ»s¸bîfJK:TŠiš„M3lrõ쌞 @Uq)f‚Ù¡çÏe—]Ƈ~È–-[¢AŒi[¿B¡áp˜p8ŒÕzdÁVbb"üãINN>öŽ‹ˆˆˆˆˆˆt Mjc¦iâóùðx<ÔÔÔPSSCEEEÃ0-`zòèÕ3ž¿ýe8Ó.Î"5͆ÕfЀy`0wÿbÁCXúÉ™”—— vÌ¥úRSSIJJÀår±oß¾Û[;©p·nݰX,üóŸÿŒ>V?ÔÉÊÊ">>žuëÖÅ ×"""""""íK1mÈçóQQv€×2’]û±9ÂX¬`&–$+|;´Æ (ß½•½eý8}x-››ì,÷ß×øðš`ñ~Ö­wSìʧŸnÄjµÒ£GO, ‹…¸¸¸ÃybÍ0ŒhøS[[Ë–-[زe ×^{-C† áwÞaÔ¨Q„Ãa~øáfâ”” 0M“øøxÎ;ï<}ôQî¾ûn233y饗¢ûÚívfÍšÅSO=Eff&§Ÿ~:¥¥¥”——Ó¿ÿ6;gi=¯×Ë+¯¼ÂŠ+8xð ñññäää0gΜ˜,]?nÜ8âãã›]}MDDDDäD¥ ¦:tˆ8ËJzfmKäѺ$KýWÝ4ðíaŶYtÎêCAÑ»tÉ bša,v;Ë¿‹–ŒÚjj¿ÞÎ{ë’ø²|0ÉÉ’’øôÓõ$97‘PJذR>“¸Äa¤¤¤´É¹-^¼˜Å‹u!Jnn. , wïÞ\ýõ<ðÀÌ;—.]º0qâDòóó›loÆŒ<òÈ#ìÙ³‡ùóçsóÍ7óøãóóŸÿœäädÎ?ÿ|ºtéÝÿª«®Âét²páBŠŠŠHKKcÖ¬Y bDNáp˜ÿþïÿfÓ¦M¤¥¥qÚi§QXXÈæÍ›¹âŠ+:º{üò—¿dùòå¼øâ‹ æ£i––wéçljK#Û¬õ¶Eî×ÿÙþíÍ Ä®êêêíÇ:‡Ik:tˆû¤&ݺL“’ýiø§’êþ;=N© ôcÔTöUc|„ª*U•R]Ç›ÿº=ãéÓËÉÔ *HI6h¯ªÀäåFºuëÞ6')r+//oÞIûÙ¶m×\s gœq?þxtRíÚÚZœNg£s?­ãÚó8À IDAT­ˆQ#"""râp8¤n›Ð··Èüæa?Sï>õoêC~k>ü·ë䫪ˆ‰1¯×‹5¸šÔô‡0¥¥!^y­” USV"5ÕÆ9#¹bfg:eØÁb¡s÷2\Õ¯‘”\·ú5Î vŇx=©ø|9T;‘ZÇ™ŒšØ“à‡«);”Ï´‹ª BüêþB6}æ!%Õ•3;3yR*fÉs”•ÝHzzzG½"ò=SRRÔ/¡Pˆ¸¸8ÜnwtŸp8Ì /¼À{ï½GQQ½{÷fÞ¼yœsÎ9GìóþûïSTTDnn.×^{-#FŒhð|Á`k®¹†¯¾úŠ|¼¼(ãáû{3 CbBÿ﮽üó‹jj<ØÚ¸ç¾jR’s1bΜ9ôë×5kÖàp8¸úê«èׯ§Ÿ~:[¶láꫯ欳Îb÷îÝüèG?bÈ!ÑçÊÌÌäÆo䡇bÁ‚üùϦsçÎüð‡?dñâÅ\{íµüÇü%%%x<î»ï>úöíËÒ¥KùÍo~ÃèÑ£™;wn“C DDDDDbÍÖÏÙšå{šÚÇÒÈ6K#ÿ­ÿ³õÛ›ºóµßyç7¶º·GÁëõâ .%.! €äÄ8^£€`0Dbbª$ßyååå-ñ‘Žçp8> ø© e"Á Ô….õ¦Þ}ê=ÞÔ‡üÖ|øo×`GsÄÄP||<ûˆcú+¢ÝuG.ó®éŽÅbR[ë£ôP~Ÿ‹Åäúëzò?¿Ý×(ÙÃÊ‘VÃ@]ELye %åuÏát%’Úy2Û‹¯`ÅÞŸòiÍÝÔfßFvºòý@È ª›óë=û›œoAÚÏ“O>Ùèã†aðÇ?þ±{#""""""íI¥1ät:‰ït.5“˜™„ÅjÇf³ð³›r¸êòSX½þ‡Jütêì$ot':wþ÷Ü0FU)ŠIÈ×ä\¦iba\ññœ>ü\|^/YYY úï9b<;v g¯þÑÇ++«i‹J ï‹?ýéOÑŸMÓ$''‡Q£Faµ6Ÿgz½^þú׿2sæLÍÓ#"""""ò=§ &ÆúôÉáãµç01ísp¦Dïœéä²iÝ=&TVHí®l®ø çœÖü²Õ­ÕXà¢æø]rÉ%$%%QSSÃ’%KHOOgðàÁÍãv»9÷Üsq»ÝíÔK9QihRŒ9rNaý–~`„ ü`>|­ŽðáÙ±‰ŠO–³©äBú>=º¼ªœØ9å”S¢Ëò6Çb±Ð»wïfWÑïUÄ´®]»âó]̲µËùjW£N/£Ï*âlaÂá0¦ßKmy5;þegãžaäô8‡œásZœ\Ôb±›Ý§)áp˜¸8[‹ÃhZR\\̺uëêVˆr¹;v,™™™¼øâ‹ôíÛ—;vpöÙgGW&Y»v-Á`ôôtŠŠŠ˜;wîí6·ß¢E‹ÈÉÉ¡°°Ó4ÉËË£{÷î-ögÑ¢EôéÓ‡¢¢"FŒÁîÝ»)))Áf³1~üx²²²8pàëׯÇï÷“žžÎøñãFä÷ûÉÏÏ'))‰ýû÷“ŸŸÏYgÔ ?zíµ×˜3g‡bÕªULŸ>¨›æúë¯oô¼×­[G  55•`½ßoS}jìu‘“ƒ‚˜6Ò»woÊˇSX²Œ¿-ËÂfÍ$5чÓ¤6`£Ê®«83g2½{÷n±Íøøx\ÖÕå$¥¥¶º/¦¦hß>Æ5§ÓÙòM¼ûî»L™2…ŒŒ öîÝËÒ¥K¹òÊ+±ÙlTWW“’’ÂUW]…ÍfÃï÷³téR¦NJFFß|ó {öì9¢Ý–ö …BœqƤ¦¦òÕW_±zõj®¼òÊû …>|8©©©lÛ¶eË–qå•W’œœÌçŸÎúõë¹ä’Kðz½|ðÁ\rÉ%$''óÙgŸ±aÃ&NœØ Ÿ¡PˆÕ«W“””D(¢¶¶–½{÷2hРc~=ß{ï=.¾øâèyïÛ· Ù>þ:‹ˆˆˆˆˆÈÉCALñz½T”WFïÛìqxƒ.|†…pØÄf70uÃZ*++ñz½M®–‘˜˜ÈEËâÅË(/aw:°„CGT¹X­V¬6 Õ•UT•â¬ôæ´Ó†WELaa!©©©dddЫW/>ûì3JKK£U(l°zzztÿnݺ5:qKûY,RSë‚§ÜÜ\V¬XѪþÔ?®oß¾lذäääèý-[¶DÛñz½¬Y³€`0ˆaGô3!!!:G À®]»XµjÕ1W¤’––Öèy·Ô§ú¯³ˆˆˆˆˆˆœ<ÄÄßï' øê«ñÙæºú‡§ÓÃaÇf³aoC˜@ ĦM›ILL¤oß\v»½ÉÊ•ÈêHË—¯£ººš´´”#‡ÃAN¯nükçnFìÏL>î{ Ã8"H Ñpçð9PÂáp“+@Ë~‘çˆDôíÛ—Õ«Wãõz±Ùl„ÃÏÔ”Æúßš>i®‘“—‚˜©¬¬äÍ7ßæ«¯vÆ¿?”×ú,uU* «3l6MÂá0á°‰Çëå7ÞÄf³bµÚèÛ7‡‹/¾ˆ”””FŸkèС¤§§ãñxˆ?"`±ýöî<¼©2}üÿ;KÓ¤M[šBéF¡”}Eµlâ°º|D·3®ã(ÎwœñÒqTtTÑQFÅe@ÅÅAʾ/¢´”¥@÷…îKöä÷GMLÚ¦MišÞ/¯\$ç<ç9÷99'wžE¥â¿LttCëäää€ÌØÇæÍ›)..¦{÷îàp80 -–/))!66–sçÎa±X€†$Ä‘#G4hP‹å/Ý»w§ººšÓ§O“’’‚ÓéÄfkhi䊱¹ÄXaa!¡¡¡DDDàt:±Z­OQQ555ÍîÏÕmª¥ãö“ æ,„B!„7IĈÝn§  “ÑØt¿uü8OAAa³]c<%%%µ¸>,,,àƒ¸êt:¦M›Fzz:v»½^ÏŒ3|vwÒétL™2…o¿ý¥RI×®]݉³ÙÌwß}GRRݺuóY.ñøÂÌ™3Ù¾};ûöíC£Ñ0tèPâãã½bX³f *UàÇááá̘1hh¥2iÒ$Ö¯_N§#::ÚgW³¡C‡òÙgŸ1cÆ ¯ãŽE¯×·Sjj`¦7B!„BÑ9:£ƒ?ûôUFÑÌ:¥Ç:×kÏçê¡@ ­©©Ét:~ìsçÎñÚkË©«­mw]áz=¿ûÝoéÚµk"»pÔÕÕñå—_rÓM7¤œ¾TTT´: ™B!„¢ói4š€ °fÀöãÃÕÍÄÙè9¯ñXîëK¾?_þ› h…´ˆ ì6+ee•í®K« ½dº ÔÖÖ¢ÕjQ«ÕdddøœÊßrB!„B!ÄÅL1¢R©Ðju”+kw]©©½.™i‰Ïœ9ÃÑ£Gq:ÄÅÅ1nܸv•B!„B!.fñm?Ð]“Íüëù\ÉO]”T€úñÇ¿ÏïhÛ ºº›ÝF·n1ÄÆv=¯G\\,—_þ  èI$cbcc2dC† ¡W¯^>Çoñ·œþ0™LîiÆEðýïÿ£  €ž={6Y÷Á`±XHHHèð8œN'[·nå›o¾!##ƒ¤¤¤vÏçËÇŒB¡ 66¶Ù×þn÷sv)ž‹Æ×{[±µòí9gþ[¼Xß?»ÝÎÒ¥K0`Z­ö¢=!„¸˜=õÔS¯ñSW$ûÿ:ðî.Ô¸ëPP»š´ˆ Føñc4x`»ë2 ~Oç,„“Þ½{ûýg÷îÝTVVrÍ5ל׾Ž=J^^·Ür …­V{^õˆ _{¯•ŽÒ–ë=ØÚÛ…z¾…Bˆ‹…$bÈ`0´yêd!„ø9¹êª«‚¶¯ÊÊJbcc}Î`&DG æõÞVrlB!Ä¥N1B!‚æã?fèС <€³gϲk×.ÊËË §oß¾Œ3†°wï^Nž<É!CHKKóªËétràÀ2220ÄÇÇ“––Fdd$›6mâ‡~ ++ ƒÁÀüùóÝÛ®_¿§ÓéþEßn·óÚk¯qùå—3a¬V+Ë—/ç¶ÛnC¯×³k×.Nœ8Íf#55•ñãÇt`u‹ÅªU«èׯ#GŽäã?&55•œœJKK‰ŒŒ$--ÍÝ•¤¥ãoëñ}ýõ×-îË“¯÷¬µ˜\>Ì?ü@}}=qqqMÖ7w.ìv»ÏóïëZi)N»ÝÎÎ;9}ú4µµµèõzFŽÉ€€†nvjµš©S§º·Ù¿?ÅÅÅ\sÍ5-n M¯÷¶ìÛåôéÓ8p€úúzºwïΤI“èÒ¥K³×PK穱Ʊµv½¹´ô·YXXHVV%%%M¶oKl¾Þ;ÎYkÇáp8ؽ{7YYY8NzõêÕdÿ-ó–®ñ={öpêÔ)n¾ùf”J%V«•÷ߟѣG3hРfß3!„?O’ˆBÑ)Ìf3_}õãǧ_¿~ÔÖÖb³Ù>|8V«µÅî{öìáÌ™3Ìœ9µZÍöíÛùì³Ï¸í¶Û˜}ü>¾Ööå©¥÷¬µ˜ª««±Z­-Ûܹ8Ÿóß–kËh4’••EAAf³™ªª*¯©©©dgg“˜˜È©S§HIIq·Fii[´¶}tt´×Øs*•Š„„Ê˲ԈëÔŸk %ž×¯çöm‰­µ÷Οsîë8*++q8tëÖ­Ù²Ðò9÷çs'>>ž~ýúñÅ_0mÚ4ôz½ßçO!Äχ$b„Bt …BÁu×]G^^™™™|õÕW$%%1kÖ¬V·µÛí8N‡×—?•JÕ$™áKïÞ½9{ö,)))( ºtéBïÞ½9rä  ¶¶–„„ª««øÕ¯~u^3/Ùív–-[æµì†n >>€=zPQQÁwß}ç÷ªþ¿¿Ç×-½g­Åd6›†16|iî\¸flËù÷÷Ú²Z­¬ZµŠ>}ú0jÔ("""øä“Op8î2ýû÷gÓ¦MŒ?žììl.»ì2¿·mÉùnïë?Ÿó,m‰­¥÷®½çÜápàt:½ºšùÃuÎýýÜ ó:n!„¢1éš$„¢S%%%1mÚ4n¼ñF²³³©­­u¯óõ+** ÀÝe¾à—””ã×~{÷îMAAÙÙÙî®&)))”––’••E=P*•DFF¢ÑhÈÎÎ>¯ãS©TÜwß}^W ""‚k®¹†ýû÷û½Žßßã;ͽg­Åå~íKsçÂßóßܵÒÒµPRR‚ÑhdìØ±ÄÄÄ Ñh8wîœW¹¤¤$¬V+yyy”––Ò³gO¿·m‰?Û{v%s)..nöoïuÚVþ&?àübkî½kï9oîm¬¥sîÏß]EEGŽaܸq¤§§»B!„'IÄ!„8›Í†Édòz4n a2™ÈÈÈpÆ™ŸŸOHHˆ{ðV½^O~~>555MºGh4ÌæÍ›)..¦¾¾ž­[·¢ÓéÜ_”[Add${÷îu'*4 l߾ݽL©T2|øpvìØANN‡Ãý¥ÐE§Ó¹[Î4÷º5ÉÉÉŒ=šo¾ùƯ19ü9~¯-ZzÏZ‹I«Õ’ššJzz:îq5¿·Ï…?ç¿ñµÒÚµå†Åbáûï¿Çd2¹Ç^ñœÅI¡Pзo_¾ýö[z÷îínùà϶y^þl_SSÃáÇÉÏϧ¾¾žíÛ·ãt:IMMmRŸ?ç)PZúÛlN[bké½;ŸsîI£Ñ0pà@6mÚDqq1uuul߾ݫLKç¼µkÜét²aÆÎW\A·nÝšÔ/„B€tMBÑ~øá÷ôÑ.wÞy§×k³ÙÌÉ“'Ù¹s'‹….]º0cÆ ÷ÝpæÌV®\IRR³gÏöÚ~âÄ‰ìØ±ƒ¯¾ú ‡ÃA=¸öÚkÛgïÞ½Ù»w¯W×Ô·ž +¯¼•JÅÖ­[©©©!,,ŒáǻNJ6l›6m¢¼¼œ™3g6yí+¯¼’¢¢"Ö­[ǼyóZ-ïÏñû{|þjí=k-¦©S§²eË>ùäìv;ݺu£k×®Mìm|.Z;ÿ¯• &´§Ktt4cÇŽe÷îÝìÚµ‹ž={º“žú÷ïÏwß}ç5¦Ž¿Ûzj|]´¶}ll,Ý»wgÛ¶mTUU‘Àõ×_ïnÉÔ¸¾ÖÎS ´ö·Ùcké;ŸsÞXZZ[·neíÚµ„††2hÐ ¯DNkç¼¥küàÁƒX­V† À¤I“X¹r%ýû÷'))©Mq !„¸´ùßA6¸ûôUFÑÌ:¥Ç:×kÏçê¡@ ­©©Él©ºââVQQáÕõC!„BqaÒh4`Ì€íLJ«¬³Ñs<^ã±Ü×—|¾ü5A ]“„B!„B!‚D1B!„B!„A"‰!„B!„Bˆ ‘DŒB!„B!DH"F!„B!„"Hdúê 0›ÍØl6:z¦&…BAHH¦C÷#„B!„Bˆó#‰˜ät:)//ÇdªG­R¡Rul$»ÍÝé 4T‡Á`@¡èŒÙÉ…B!„Bá‹tMê@µµµu„jB:<  R+Ñ„¨1™ê©­­íðý !„B!„¢m$ÓŒF#*eðO±RáÄh4}¿B!„B!„h™tMê@‡ƒïSl2Y(+/G€v¢„˜ÚÐP÷¢ 6{ v „B!„Bˆ@‘DL™L>\·c¨- õjÍjn™y­W2F!„B!„IÄQÞ¹Bjú:A¡ h½µN9%ôë‘Ðz…":zæ8!„BˆÖÈ„&âB ‰˜ ªs¡#þî ê즨طôôt¾þúkNž€¬¬,î»ï>6lØÐæ}øá‡¼ûî»lÙ²…Ù³góÀàp8øðÃùú믩¬¬dÈ!îýCC÷§›o¾™¯¿þš~ø§žzŠ#Fœ÷9âRæÙâÅõ°ÙlX,”J%:Ž”J¥Üð!„¢Ã9NV«£ÑˆÙlF£Ñ V«›$däÞD‹$b‚(RÎ )“9[WˆÓ˜dŒB© 9<ލŽïd2™ÈËËcРA>Ë„„„””ÄÓO?Mhh(›6mâÙgŸeàÀ$''7»Í‡~ÈÆY¼x1111>|˜.]º´9¾Öö=þ|ŒFc“®I+V¬`×®]<õÔShµZ–-[ÆþðV®\IHHO>ù$=ô¿ýíoIJJjslBü4NÂ8Ìf3QQQ¨Õò¿!„B—B¡@¥R¡R©ÐjµØl6jjj°Ùl„††¢T*Ýå$#‚E,1¼‰áÝ:;ŒóRPP€Óél5Iríµ×ºŸßzë­|õÕWdff6›ˆ±Ûí¬\¹’矞þýû0uêÔóޱ-û††V4ÿùÏxå•WèÝ»7‹/æÆodÇŽ¤¥¥0kÖ,æÎ{Þq q©óL¸ºF ëäè„B!¨Õj¢££©¯¯§¾¾Nçîº$É,’ˆ~‹‰‰2‘‘‘>ËUUU±aÃŽ9BMM ùùùî_Å+,,¤¾¾ž$ƶìŽÅf³Ñ¯_?÷2­VË AƒÈÉÉq/§sçΑ“s–êšêf×[¬VòóóÉÏÏÇjµ5[¦¦¦šœœ³œ;w®#Cõ…Á``ïÞ½>˘L&.\ȹsç¸óÎ;yúé§éÓ§Ï9kkkZ¸ÓßÙUÚºo‹ÅâþâèI£Ñ ÑhüÚ¯¢+c±XÐét’„B!ÄM«Õ¢ÓéÜß dVG,’ˆ ²ŒŒ >Ìñã'Ø·w………^ëÍf3{wï&33“ÌÌLvïÞÅbñ*SPXÈÞ½û8~ü‡&33#hñÏ›7?ü‚‚‚f×;vŒªª*.\HJJ aaaœòó 0™Œµ·yóæÑ¿~ó›ß°fÍNŸ>Mnn.7ndçÎ jkkùüóÏ©®®fóæÍ¡eMaa!N§“ÈÈH&L˜À?ÿùOrrr¨¯¯gçÎ Ç3tèP¾úê+ŠŠŠ(((àùçŸÇjµ6[—?ûŽå»ï¾£¨¨“ÉDXX3fÌàÅ_䨱cTTTðÊ+¯Í•W^ŒS*ÄE«ñ ŠÝnÇb±œYÜ„B!!""‹ÅÒ¤•¼$cDGQuÂ>ýél竌¢™uŠfþõ|®üñ¡¦áxÕ?þø}~GÛµµµ(=R]¹9yTT–{•1™,ôé“ê~}`ÿaPxÿÁ——W‘ššâ~™™éÝÛE¥Ò`0D»_;œ ×~&%¥RÉôéÓÑjµ¤§§³råJÖ­[GQQ)))\qÅ„††òþûïóÉ'Ÿàp8HJJ"11Ñ=ott4+W®äðáÃL™2…+¯¼’ãÇóÖ[oññÇSPPÀÈ‘#Ñëõ 2„C‡±|ùröîÝË”)S8vì·Þzk“º®¿þúV÷Ý«W/233Y¶lÇŽcêÔ©\yå•ñÎ;ïðÙgŸÑ­[7þüç?»»U¬]»–x##.l&“I’AäÙÆétvÈgB!DGQ©T˜L&÷ K€{Œ+¦ã=õÔS¯6ÀØü×x~1nœ»¨³dqU:£ôXçzíù\ýã#´555™ÁÈn¡öHuUVV‘¾y úˆŸf9w®’›oþ?÷ëôÍÛ°ÚLî?x§Ó‰Z­eÒ¤ñî2ÿùx51]JºÔÔÔ“–6èèŸf3²Ù½[‚ñsRQQA|||g‡qÉóì–d·Û1„‡‡£Óé:92!„Bˆ¶1ÔÕÕ¡ÓéP©T^ÓZ‹Ž¥Ñh&À ˜iHʸ3Ðtñ|ŽÇk<–ûú’ïÏ—ÿ &v¤kRué…R¥!/¯˜ò²*²Oå1p ÷lA#®¼‚ì“ù”–”SZRΩ“y\yå^e ÄéÓy”—U‘—WŒJ¥ñJÂ!DGóœ)Éõ°Ûí2ȵB!.J»ÝîuoÒ=It ™¾:ÈfÏžÎÉÙ”••3nB2 ñݽÖëõá,¸ýf22¯4°?º0ï™G.»l0Ýb»’s&‡˜}úÊ ²BˆÎáy³âp8št›B!„¸(•Jwwk×CZÈŽ"‰˜ S(ôí—J_R}–Ñ…i>ü²ëIˆïÞ$‰#„Åuã"7,B!„¸) ÷K®qb„è(òÓe'¨7)(,Æjµ5»Þétrî\9ee>›Â)l&4eGQšª:2T!„hU šî~ûí·Œ3†ÜÜ\¯åŸ}öÓ§O§¶¶Ö½,==ë®»ŽU«Vy•õµü|Ì›7ÿûßç½½ÅbaĈäååµ^¸Ú›B!š'Ý‘D°H‹˜ ;xà_}µ»ÝNDD8¿š ? ªk·ÛùèÃ5œ<Ù0­uß¾½¹ùW×yeeCKŽÐ}ý¨êKqª4”ý 5ýo ú±!„§öÜ´L™2…µk×òüóÏóÊ+¯PYYÉÒ¥KY¼x1z½žÌÌL^zé%òóó)..voëky{¤¥¥1`À€Ö v‚ 9¶æ,[¶Œ¼¼<ž~úéÎE!„h‘$`D°H"&ˆêFw ¦¦Ž/¿ü†{îYà.s`ÿwî$ À‰Ù8p„‘#‡¹—ÅìxU}) »…˜¥®çÕ8´QA:!„¼G}”o¼‘-[¶0qâD^~ùe.»ì2¦L™À_|Á”)S¸îºë¸ÿþûÝÛùZÞ‹- H=áBŽM!ÄÏ‹ÙlÆh4b6›±Z­îÁnÙUY¡P T* !44NGhhhÀê¢3H"&ˆN<ëN¸–x½þþûÌ&Û9’ᕈєy—QØ-h*ObŠÀh…"¸âãã¹çž{xá… eÓ¦M^ÝŒ}ôÑf·óµÜÓO<Ãáà™gžº3†ùóçóàƒP__ÏäÉ“ùôÓOyì±Ç¸á†˜;w. , --Ý»w“••Ebb"üã¹üòˆ֌o¼ñÿûßÿ°ÛíŒ7Îkÿ‡ƒwß}—µk×RQQÁe—]ÆÿøG‚Û²eËøßÿþ‡ÓédòäÉlÛ¶¥K—’””äçÎ;yã7ÈÎΦk×®L:•ûî»Ç{ NÇÿûÿÏ]öÝwßåÈ‘#,Y²Äçvï½÷o¿ý67näúë¯çÑGÅjµòú믳aÃÌf3iii<ðÀ„……¹iâĉìÚµ‹'NœœÌc=Æ‘#GøüóÏ),,dĈ<ñÄDGG·úþ !„,£ÑHuu5F£Ñ½Ì³5IãdL{3®™ív;&“‰ªª*´Z-‘‘‘ètºó®WˆÎ$cÄQdD8v›w"ÆXoòzíp6žœvïe §½IœÍ7#„“[n¹½^Ï}÷Ýǽ÷ÞK÷î”|„ ìÛ·Ï}“¸ÿ~ a\—ƒ’””Dbbb“í+++yýõ×ùýïÏš5k2dˆ;¡°téRvîÜÉ’%KX¾|¹×)À›o¾É·ß~ËsÏ=ÇÊ•+Ñh4,\¸«ÕÚá±½úê«ìÚµ‹_|‘7ÞxƒÊÊÊfÇ®©®®æ‘GaΜ9¬[·Ž%K–0yòd¦M›ÆöíÛ½n²·lÙÂÔ©S[ÜnÁ‚Ü}÷ÝLŸ>={ö¸“fÏ?ÿ<ùùù¼÷Þ{|ðÁäççóꫯzÓ²eËxðÁY³f ÉÉÉ,X°€ÜÜ\ž{î9Þÿ}òòòxíµ×š‡BˆŽUVVFqq1F£Ñ=¸­ÝnÇápx=\Ë$&&ò׿þ•ºº:¶nÝÚ¡±™ÍfV¯^í36O¥¥¥X­VÆGdd$©©© 4€±cÇb49zô(ååådee1a„·kN]]Ÿþ9?ü0ƒØØX.\è•xrÓ Aƒ0 ÜvÛmÜ}÷Ý$''“œœÌœ9s8|ø°Ïý!„,‡ÃAQQ555^ ½^O\\={ö$55•ÔÔTzöìI\\z½Þ+!‡¥¦¦†ââbަ?f q!“DL)•J~ô>.»l0†.]˜6u"óo¹Á«LÏž=¸ï¾»IŒ'1>žûþ¿_Ó«WNŠX²eË:u{!.&¤§§3tèPžy晀ÝXéõz®¸â öíÛÀŽ;˜2e cÆŒaÛ¶m@C²cìØ±>ëP*ú_fBB:Žúúzòòò°Ûí^èz–ÍÏÏÇf³y­×ét :”3gÎthlùùù-Ææ)%%…#F0oÞ</^ÌÞ½{ÝëBCC™0a‚;ž­[·2jÔ(ÂÃÃ[Ü®9gÏžÅápp÷Ýw3gÎæÌ™ÃŸþô'êêê|SïÞ½†.Zžñz¾BѱJJJ0^ ˜^½zKxx8jõO£^¨ÕjÂÃÉ¥W¯^M2LƘL&JKKVŸÁ cÄ™^ÆÍ¿º®Å2}ûõ¦o¿ÞAŠH´Å¹sçØ³gåååX­V¢££™4i]ºtéìЄ¸$<óÌ3Ìœ9“E‹qà 7ðÉ'Ÿ0oÞ¼€Ôísdܸq¨T*’““IKKcõêÕ̘1ƒââb† ÖzE?rõw·Z­îfØÍ%9,‹û¦Õs½F£A£Ñthl6›­ÅØ<)•J^ýu8ÀÚµkyä‘G1bK–,`êÔ©¼õÖ[Ü{ï½lÙ²…iÓ¦ùµ]c¬\¹’¨¨ód>A !„hYYY™»+’Ýn'66ÖïÏpµZMll,¡¡¡”””xͨÏr“ÉDyy9ƒ! õ ÑѤEŒ~ÊÉÉaÆ 6Œ[n¹…Ûo¿±cÇ¢×ë;;4vîÜIEEEg‡!D»|ýõ×?~œE‹¡×ëy衇XºtiÀ¦¤ž0a‡bëÖ­Œ?€qãÆqìØ1Ö¯_ϨQ£¼~ÍóW ­:ä÷z‡ÃAFF}úôéÐØ\ƒñúŠ­9ÇçÉ'ŸäwÞaË–-””4 *?vìXòóó9}ú4‡b„ ~m¸Ç«†A™ÃÃÃÙ²eK›G!DðÕ××»»#µ5 ã)**ŠØØX÷ÌJønJÇhâB%‰˜ ËÏ+dùò÷xæéòŸÖP[[פÌöm»YòÂk,yá5¶ïØã_Å2ç}‡r8lÛ¶éÓ§“€R©D¥R{^_Ž­¸¸‹ÅÒÙaqÞª««yñŹÿþûÝÉÍ«¯¾šË/¿Ü=›P{ÅÇÇ“À[o½åNvèõz† Æ?ÿùOŸc°´&,,ŒY³fñ÷¿ÿ£GrîÜ9^~ùe¯õsçÎåÙgŸ%##ƒòòr^xá £GîÔØZCmm-™ÇNp“GW¥ÌÌlܸÕýzã7[èc`À€¾-Öm/ˇ„º‘’’¶oßN}}=Z­– & Àûï¿Oß¾}9vìW]uýû÷§°°mÛ¶aµZ1 sÇw4©·¥ro¾ù&©©©át:™8q¢ûæ–âyóÍ7éÝ»·û×ôQ£FqêÔ)JKKQ©TLž<Ù=#K^^;vìÀl6c0˜}: …‚Õ«Wsûí·»ËlÞ¼™o¼Ñ¯}ýôSRRRøå/Ùæ÷IˆÎöÒK/‘’’ÂŒ3¼–ÿéOâÆodýúõLŸ>½Ýû™0ao¿ý¶{jg€I“&±{÷îfÿfýõÇ?þ‘_|‘x€ÈÈHfÏžMBÂOÊ<ò¯¼ò ?ü06›Q£Fñꫯz5ÉVlW_}5Ðt¬˜šš6mÚÄÒ¥K©««£gÏžüãÿpwŸ‚†Ù“zè!þö·¿ù½ÝÌ™3Ù±c7ÝtÇ祗^â®»î"44”^x¢¢" ·ß~{‹ƒü !„>“Éä5.LLLL»ëŒ‰‰¡¢¢…Báþÿ` »(™ÍfBCCRŸ¥3:Xû³O_eͬSz¬s½ö|®þñ „ÚšššÌ@6ƒó¥¨¨õO] ÉÊ:ÅG~êUF­VóÄŸt¿þðƒO8~<Û«Lß~©Üâ1¨o¯7ûÑø³*gØŸ±¸ÍýÚf‡¸¸¸ÅO, ~ø!³gÏ&&&†3gΰeËn½õVT*¯¿þ:“&M¢_¿~¨T*Ìf3|ðsçÎ%&&†œœ¾üòK-ZäUokå^ýuæÏŸO—.]8qâ{öìáÖ[oõ+×v¤§§së­·Éwß}Ç©S§¸þú멯¯gÕªU\ýõDFFràÀ***˜:uª;Æ3gÎpäÈæÌ™Óì¹q8ÔÖÖ‰ÉdbõêÕL›6¸¸8–-[ƽ÷Þ‹Õjå£>bÆŒtíÚ“ÉDhh(F£±ÅDŒkû–ö±fÍÆŒC÷îÝÛü>]Š***ˆïì0.i®ÏP×™Íf£¦¦ÆÝF\¸ÊÊʸæškرc‡W’Å999Ì›77^Ý2…Bt¬ŠŠ ***°ÙlDFFìûEQQÕÕÕ¨Õj”Je@ÇýŠŠŠ:ïñóòòˆˆˆ@­V£R©Ü?ZȸdK£Ñ L€0¶®fSÎFÏñxÇr__òýùòÔ.&Ò5)ˆý!]êë½û1–•W5Ù®¢Ì{ìz“÷Ûæp€µKŸEé[QQ]ºtqgÂ]# —••¹Ë 8ÐýåÞõ+§«|bbb³7ý­•S(îÓ>}ú¸[µçv}ûöE£Ñé~íjºXTTD}}=[·nåË/¿$''‡ÊÊJ¯ÃÃÃ[lê¨T*±Ùlìß¿Ÿ]»vQ__ßdââbÂÃÃéÚµ+Z­¶MêþìßóÞï“âç%++‹¤¤¤6'aÒÓÓ9r¤$a„âgÀétb2™Üƒ¾ò³_¯×»ë ô,Jf³9`u ÑQ¤kR¥öéE}‘°p …›ÝN·F]]®=œÕÿù/ºpШ5k„W™<ÍR¬{Ñ„4$aΖE¢èyE‡Ço·Û›Ü¸[,Ÿ™b‡Ãá×¾¿å\ûpí§µx<5^Öxæ’¸¸8fÍšås¿ÑÑÑX,rssÝÝ¢<•””°yófÒÒÒ0 TTT4³Åb± Ó隭ߟ>²þìÚþ> !.mgΜáìÙ³ >œ²²2–.]Êm·ÝÖú†Íøæ›o¸á†Z/(„â’`±X܃ôjµÚ€Õ«Õj±Ûí¨T*œNg@ïO=ˆâB%-b‚H£Ñ°èww¡p*8WRA7ƒ»î¹Å«Ìˆ+/güÄ«¨®¬¡º²†‰Çpå•—{•QÏÿ'™ÊÉ|:Œïªc»õß(B:¾d\\EEEî1W p8>ÇMq•wÍœqîÜ9wâÀn·sèÐ!Ìfs‹å/Ý»w§ººšÓ§O Ù«Õê£Z­fìØ±lܸ‘Ó§O»³÷eeeØl6ÊËËÑjµtëÖ »ÝNQQ‘»Å‰J¥Âf³Kaa!ååå@Ãÿ$œN':«ÕJaa!ÐТ¥¦¦ÆŸkû–ö¡ÕjÝÛê¼!. 555¼óÎ;\sÍ5<ðÀÌš5‹ë¯¿¾Íõäæærüøq&NœØQ !„¸¹îyG@'¨P«Õ#"ФELkœáMéÌ“Oý±Åmf;šY³¯ö¹^Ù•È…o´¸ÏŽþG§Ó1mÚ4ÒÓÓ±Ûíèõzf̘Ñl Wù)S¦ðí·ß¢T*éÚµ+!!!@C“Áï¾ûޤ¤$ºuëæ³\ ãñ%$$„™3g²}ûvöíÛ‡F£aèСÄÇÇ{ÅØ¿ÂÂÂØ¿?ééé( “&M"55•ÜÜ\>øàt:ñññî$ÉСCùì³Ï˜1ciii¬_¿žt:“&M",,ŒI“&±~ýzt:ÑÑÑ„‡‡»ãsm?mÚ4Ÿû6lÛ¶m###ƒY³fä¼!. C‡åÝwßmw==zô`ïÞ½ˆH!ÄÅÀÕe(Ð]‡š«_ˆŸ¬·a³˜Ðê׌ÏF£‰6àƒõ¶W]]_~ù%7ÝtS@Ê á‹ ÖÛñd°^!„âÒæp8ÈÉÉqÏD4xðà€µŠ±Ùl=z”ÐÐPBBBP©T랤R©Îû~Dëí2X¯¸ü‚‚ ï³ öéKmm-6› €ŒŒ RRRÚUN!„Bž­ÔFc %Û&u5æOËz!:›tMê@J¥’’’b"#"Pª;-[sœN'»ƒ’’Rzwü,Jþ8sæ GÅétǸqãÚUN!„B¡¡¡ÔÖÖ¢P(¨¬¬$""" õVVVzMÂH¡¡?v¦í%‰˜¤Óép8Áh2RXXè5kGˆˆˆ >>ÇÀ^† Â!CVN!„BÑñ :Î0)**">>¾ÝÝ“l6EEEhµÚIÆ\(߃„h‰tMê@z½ž¤¤dÊ+*ƒ2z·Ãá ¼¢’=z¢×ë;|B!„BˆK—V«E§Ó¡T*Q©T¡  À=þJ “0Z­VZĈ‹‚´ˆé@ …‚aÆqâÄ P‡tì ½Z­–„„úöí+J !~Ö^yå~ÿûßwvB!ÄEM¡PE]]*•ŠÂÂBÂÃɉ‰9¯úÊÊÊ(,,D«Õºè ä÷–ÈÈÈ€Õ%DG’DLS*•ôïߟþýûwv(B!:Pee%[·nE¡P0{ölŸË„Bˆ‹+AFTTååå„„„••EÿþýÛœŒ)++#++ ­V‹Z­F©Tº[Å"!Ý’ÄECº& !„øÙÛºu+åååç½ýÎ;Y»v-¦ÅeB!ÄÅF©TÒµkWÂÃÃQ«Õh4Ž;Æ™3gܳž¶Äf³qæÌŽ;†F£ñš:P­a´Z-ƒ! u  Ò"F!ÄÏ^QQýúõ;ïíûõëÇUW]ENNGŽñ¹L!„¸˜¸%J¥’¸¸8œN§{’‚‚rrrèÑ£111„……¹òµÙlÔ××SVVFnn.jµšÐÐP4 !!!^‰˜ö&c´Z-ݺukß d’ˆBÑéœN'[·nåÔ©S¨T*zôèÁäÉ“(..fË–-ÔÕÕ¡Õj™}šÜÜ\ú÷ïßlF!„¸Tx¶ŠˆE§ÓQQQA]]6› »ÝŽÃáÀétº·q%b\‰׿®Az=ën+­VKdd¤Œ #.Z’ˆBÑ颣£©­­eóæÍ¤¦¦’œœ 44{ŽŽŽv·.éÝ»7#ß‹ IDAT{÷¬ ³ÙŒ^¯'66ÀëfÌétòù矓ÀÀÝuÕÕÕ±yóf !Éc·ÛÛ§B¡àšk®aÅŠÄÆÆò«_ýªÝÇ.„B\è<“1 …‚ÈÈHÂÃ鯯§®®£ÑèþÿªÓét'b\W ÏîHþ&a\u…„„ŠN§“)ªÅEO1B!:]TTwÞy'ÙÙÙ=z”íÛ·3þ|G“Án- J¥‹Åâó—0…BAJJ ™™™Œ9FChh( \{íµ-ÆrúôiŸ]“èŽÇó=!„âRçÙŠÅõÐëõ„‡‡»[Ãx¶ˆq%P<“2ím #Ä¥B1B!:ÙlÆf³Ñ·o_zõêÅ›o¾‰Ùl&>>ž 6PTTD\\ùùù8NbbbÐétlذòòr V«µZí¾¹>|8ÕÕÕ¬[·Ž9sæGUUÙÙÙôîݧӉÍf#$$NGuu5qqq¤¤¤øìš°~ýzfÏžMFFßÿ=C‡ ÖiB!:•B¡hÒâÅ•€q%a<Ëz¶|‘$Œ?‘DŒBˆNW^^ή]»¨­­Ån·3zôh÷x/¿üå/Ù¸q#v»½^ÏìÙ³Q*•èõz¦NÊW_}åN¦L:Õk°Þ´´4Ö®]ËæÍ›™2e sçÎ%==Ý»w£Ñh¸ì²ËèÛ·/Ç'==ï¿ÿžë®»Îç‚ûöí#,,ŒÔÔTøè£HLL”…Bül4N¤¸^7—ˆiéµ?gñ×àÏ>}•Q4³Né±ÎõÚó¹úÇG(hkjj2P!.ÄÇÇwv—4×g¨ÃáÀn·c³Ù¨©©!))©“#B!Dgh-s1ÈËË#""¢ÉÌNã±\L4Í@ÀX3`ûñᚊËÙè9¯ñXîëK¾?_þƒš 1B!„B!ÚE’Bø¯ý“· !„B!„B¿H"F!„B!„"H$#„B!„B$’ˆB!„B!„¬·ƒ8Î&#‡›B¡A³„B!„Bˆ ˆ$bÌf³a4©+3a³Ø;-£P(PkT„ÇhÑét¨ÕòV !„B!„M¾Ñhä‡ '9¾ºKµ½³Ã@©¢ß¼î ™šŠN§ëìp„B!„BˆŸ5#&@ìv;¹Ç 9únÑ“„°TÛ9úïBò²Š°Û/œ¸„B!„BˆŸ#IĈÙl¦àp9N[çŽ Ó§ÍIþ¡2Ìfsg‡"„B!„Bü¬Iפq8Ôœ«íì0|ª9W‹Ãáèì0„—¸òòòÎA!„Bˆ š$bèBNt:¶ôôt¾þúkNžúˆÄÄÄÙ‡¢yƒ¡³CB!„8/õõõ‚ø™DL€8N”Ê ·§—R© Ø Nÿûß9|ø0wÝu‹-Âjµrüøqôz}@êB!„B!.U’ˆ ›ÍFX˜°tv(ÍÒétØl¶v׳qãF:ÄŠ+w/ïÓ§O»ëB!„B!.u’ˆ »ÝNm™Zû…Ùœ­¶FY“V¬XÁ]wÝå•„ñdµZY¾|9;w´”ØØX,XÀôéÓ}ÖiµZy뭷ؼy3f³™ñãÇsß}÷¹§Û¾çž{?~<{÷îåĉ$$$pÿý÷ó‹_üh8÷o¿ý67nÄáp0zôè6ÅsÏ=÷póÍ7óõ×_óÃ?ðÔSO1bĈvŸ+!„B!„¢1IÄEeE? ´³Ãh–IÙþ“L&yyy 4Èg™’’’xúé§ eÓ¦M<ûì³ 8äääf·yå•W¨¬¬äÍ7ßÄf³ñÌ3ÏðÆoðÀPUUÅ[o½Åo¼A||<ï¼óùË_Xµj!!!,_¾œƒòÌ3Ï ÓéX±bE›ãyòÉ'y衇øíoKRRR»Ï•B!„BÑIĈR©¤ç𮌿æÂlI±~íævaSPP€Óé¤K—.-–»öÚkÝÏo½õV¾úê+233›MÄÔÕÕ±víZ>ù䢣£øõ¯ÍŸÿügw"&**Š[o½Õºå–[øïÿK^^‰‰‰¬Y³†¥K—º»G=üðÃ|óÍ7mŠgÖ¬YÌ;·­§D!„B!„hIÄBqÖ«P´»Ž˜˜ !!é³\UU6làÈ‘#ÔÔÔŸŸÙÜ|‹œ¼¼<‹-BñcŒ6›­ÉˆåžI¤¸¸8t:F£‘üü|ìv;}ûöu¯W©TmŽgðàÁ~œ!„B!„¢}$píOx\¨¢¢¢0 ìÝ»—4[Æd2±páB&NœÈwÞI÷îݹï¾û|NŸíšié_ÿúW‹ÉÆ<“6‡‡ÃÑl‹Ÿ¶Æ#„B!„Bt¤ · ÇÅHñÓC¡T R«Q©Õ(” ÷r§Ó‰ÅjÅbµâÄ´åÊÍ›7?ü‚‚‚f×;vŒªª*.\HJJ aaaœÍÓO?Ím·ÝFhh(¯¼ò ÅÅÅDGG3þ|ú÷ïïWLøÃXºt)úÓŸˆŒŒä—¿ü%ñññ~Å#„B!„BKg hâÏ>}•i®‡ÒcëµçsõP ÐÖÔÔdzv_ „òòrN)`üôá?öc"ÆÑh_®ñIiÒ‘Ë¿ùr3C†À`0´á¨„¸8UTT¸“q¢c¸>Cv»›ÍFMMLÿ.„Bˆ‹V^^¨ÕjT*•ûû”"Ÿß4Í@ÀX3`ûñáØÓÙè9¯ñXîëK¾?_þ› h…tM 41Y8q4§EJ•¥JÜåBq{衇xðÁ›,æ™g1bD“™Ôrrr9r$ÕÕÕíÚï‚ øïÿÛ®:Zb±X1byyyíªgÞ¼yüûßÿîô8šÓÞØ„B!~n$@ 9 õ?!„¸p]uÕUBqJLL$99™¸—íÚµ‹±cÇ’––ÆŽ;Ü­eœN'û÷ïgôèÑX­V^|ñE®»î:ÆŽËõ×_ϺuëÜu<öØcüíoóÚ×»ï¾ËC=Ô$†Öꂆ®Lï¼ó÷Üs'Ndþüù>|ؽÞn·óÚk¯1{ölf̘Á /¼Ðìñ>ñÄ<þøãî×®®C/¾ø¢{Y}}=£G&??¿IªöÆáp8X±b×_=“&Mâþûï§   h±-]º”Y³f1sæL–,Yµ×^Ûl·©;w²`ÁÆǵ×^ËÒ¥KÖßW_Û½÷Þ{¼ýöÛ¬_¿žQ£Fñühxï_~ùef͚ŴiÓxúé§½ºÃ-X°€·ß~›_ÿú×Lœ8‘Ûn»ŒŒ >þøcn¾ùf&NœÈC=DEEE“cBˆK‘Ñh¤¸¸˜ÂÂB*++1X­VN§Óý¯ëÑN§»ÝŽÉd¢ªªŠ¢¢"Š‹‹1:!‚O1È×Oãå9ûKXý»­øð8><ÎêE[È=XÚæzZ[.„²Ñ£G{%bvìØÁرc5jõõõdddÙlfèС„„„УG^xáV­ZÅìÙ³yòÉ'9{ö,Ó¦Mcûöí^Ÿ‰[¶laêÔ©MößZ]•••¼þúëüþ÷¿gÍš5 2„G}«Õ ÀÒ¥KÙ¹s'K–,aùòå>o'L˜À¾}ûÜqíß¿€ôôtw™ƒ’””Dbbb“íÛÇ›o¾É·ß~ËsÏ=ÇÊ•+Ñh4,\¸«ÕÚá±½úê«ìÚµ‹_|‘7ÞxƒÊÊÊf“0ÕÕÕ<òÈ#Ì™3‡uëÖ±dÉw«¨–Þ×–¶[°`wß}7Ó§OgÏž=<úè£<ÿüóäççóÞ{ïñÁŸŸÏ«¯¾êuLË–-ãÁdÍš5$''³`Árssyî¹çxÿý÷ÉËËãµ×^krBq©)++s'B\I»ÝŽÃáðz¸–y&dõÅd2QRRByyy@ê"Ø$P?5?±Ûìäää““ƒÝfkqùžw2±Û~Áns°ûíÌ6×ÓÒri#„¸ÐyŽc2™8rä£F"44”Q£F±mÛ6öíÛÇ•W^‰J¥àÆo$55•ÄÄDî¼óN8zô(cÇŽÅh4º_———“••åsû–êèÒ¥ ‹/fÈ! î¸ãÊÊÊÈÍÍÅb±°jÕ*/^L¿~ýèÑ£‡Ï±HÆŒCMM 'OžZpüîw¿£²²’ììlöìÙøqãšÝ¾=qX,V®\Éã?NŸ>}HLLä¯ý+uuulݺµCc3›Í¬^½Ú¯sTZZŠÕjeܸqDFF’ššÊ AƒZ}_[Ú®9uuu|þùç<üðà bccY¸p¡WâÉuLƒ Â`0pÛm·p÷Ýw“œœLrr2sæÌñjù#„—‡ÃAQQ555^ ½^O\\={ö$55•ÔÔTzöìI\\z½Þ+!ôãššŠ‹‹›Œ1'Ä…Nƈ 0WºÃáp—{Pà>ÑÍ-¯.ªoROuQ=Š6ÖÓÒr!„¸Ð1³ÙÌñãÇ)--eàÀDDD0qâDþóŸÿpï½÷6¦²²’¯¿þšÃ‡SSSC^^&“ €ÐÐP&L˜À¶mÛ2d[·neÔ¨Q„‡‡7CKu¹¸¦²HHH@§ÓQ__O^^v»ÝkàZϲžôz=W\qûöí£oß¾ìØ±ƒ—_~™¬¬,¶mÛFïÞ½Ù³g<òˆÏóu¾qäççc³Ù¼Öët:†Ê™3g˜2eJ‡Å–ŸŸï÷9JIIaĈÌ›7ñãÇ3wî\FŽ ´ü¾¶´]sΞ=‹Ãáàî»ïvi`³Ù¨««óyL½{÷ºh w¼g÷BˆKIII‰W+˜ÈÈH juÓojµµZMxx8ƒòòrª««Q*•îÏÚ@#c2™(--¥{÷î©Oˆ`1öcã•ZÅe— ã²Ë.oøÕ¶…åÝšT7(ºÍõ´´\!.t:ŽË/¿œ°sçN¯ãÇçĉràÀF 4ôQ¿ãŽ;(--å·¿ý-/¼ðýúõÃn·»·:uª»5¯nIþÖÕפ«o¼¿¿ÊMœ8‘½{÷’““ƒJ¥"99ùÿgïÎã›®òÅÿ¿²'Ý›î¥EJ¡XÙ÷E(»ˆ(ˆƒ8—AGt†ëx}øgÔq†;Þ¹÷þÆYtÆQ¸¢èྌ¢ ›,JY”E+(ûRºotM“&i>É÷LlèN|?<Ú|>çsÎù$åC>ïœó>Lš4‰ììl***(++cèСª«3ýp:¾o1›ÒëõèõúËÚ7—ËÕá×H­VóÒK/ñüóÏ£Óéxâ‰'ürû´ö¾¶wÜżÁ¾wÞy‡µkײvíZ6nÜHvvv‡Ï¯é9 !Äõ¨²²Ò„Q…˜˜bcc[ Â\L«ÕKLLŒ/™o S)Øív™¦$®)ˆ ǃZóý4 FKhX8¡aáh4Ú6·OøDôñÕ‘„‡uºž¶¶«5É#„¸ê;–ƒúòÃxEFF2pà@þùÏáËMrìØ1jjjxôÑGéÝ»7AAAœ##ƒœœ²³³™0aãÇçøñã¾d²ù€ÛÙ~´´ßívsôèQúôésYû–””ÔfßZ2|øpþð‡?°råJvîÜIyy9ÐþûÚÚq€/_ @BBÁÁÁìܹ³Óç#„?6›Í7IQbcc ït=áááÄÆÆú‚1øiJ’ÀW\+$ ‡Ðˆ K:6¢G÷¼2™;ŸÏÏŽçǯL&<±åaó—*2*T1Ýdùòå«KQ^{íµ€Õ'ÄÕf̘1ìÚµ‹ÆÆFRSSýöMœ8‘5kÖøFØÍfêëëYµjµµµdff¦Ãxéõz&L˜À³Ï>˰aà iøŽˆ ¨¨ÇÓ¡ºÚÄí·ßΟþô'Ž9Âùóçyá…Z-Ÿ@bb"¯¾úª/ØÂСCùÇ?þÑj–®ö#((ˆ9sæðç?ÿ™£GRUUÅsÏ=‡Ùlö½¶ÝÕ·¦êêêX»v-åååØív¾üòKL&@ëïk{ÇÅÅÅ‘““CII hµZî»ï>–.]ʾ}ûP…²²2_rh!„ø¡«««ó¤ »¤ ŒWxx8aaa¾¼1VWWð:…¸$ ƒ^{É+Kë ’†D“4$­^ð•«õzbàüùólذ·ß~›•+W²zõjjjjº»[B\7ÒÒÒ€ £.6qâD¿ü0½zõâÑGå•W^aîܹdee1yòäfÇNŸ>ýû÷7›–´`Á6mÚÄO<ÑáºÚòä“O2bÄ{ì1zè!bccÛ äddd`µZ2dˆo›·Í¦çÙYíõã‰'ž`ܸq<þøãüøÇ?Æb±°téR¿é5WªoÞô犱X,lß¾… 2uêTÖ¬YÃ_þòßô)hù}mï¸Y³f1hÐ î¹çß2Ý<ð?ýéOyî¹ç˜4i‹/æøñã—|ŽBq½°Ûí444ø1QQQ]®3**ªÙŠJb·Ûq8«OˆË¥;&4w¤ÍÖÊ´”ñDÝdŸ÷yÓßµß= €0Z,–cJTTT`«±sÓ~­7P}uˆps111ÝÝ•kV~~>{öìaâĉÄÇÇãñx¨¬¬l5I™×òåËùÅ/~>(ŠÂ믿ÎÏ~ö³€Ôw½ª®®&!!¡»»q]ó^C½Ì\.‹Å7õäj“ŸŸÏüùóÉÌÌô#º_ee%·Þz+{öìñ ²t„¼¯BqyUWWS]]Ëå",,Œøøø€Ô[ZZJ]]Z­Ö/o „‡‡ûFAvVaa!¡¡¡hµZ4ïKÉvyéõútÀ4ÀõÝÃ;lÊsÑï4yN“í­ÝäwäæÿŠŽZEuêjÎŒ{µöëÚàv»Ùµk3gÎô­Û½BtTVV£F’›õ«Ð‰'HJJêtä}BˆËÉãñ`·Û}IÖy­ ¡¦¦·ÛðU”dDŒ¸H ærñxp:À…yìx/,—°ÝÏ¥nòòrvïÞÍfÃh4’‘‘á F¼ýöÛôíÛ—ãÇ3vìXúõëGII‰/߃Ùl¦¬¬Œûï¿¿Y½m•[±b©©©”––âñx˜8q¢/Ùd[ýY±b½{÷ö%Ú=z4gΜ¡¢¢FÔ)S|ËܲgÏf³™)S¦ô}ΟÚÚZ´Z­_¦)«ÕʶmÛ¨®®FQÒÓÓ[ºßZ;mcII »wïÆétáK2ÙV›-½BümÙ²…ýèGÝÝ œ;w޼¼<†Nee%Ë–-ãÞ{、ºä}BˆËËétú’ôÆ€Õk4QÍw ŠrÄIÓ„ìB\­$`ÞkˆÃá$çë/6d8z£á’¶{<àþ.¸¢V©üâ-ÙN§“7rÇwŹsçøì³ÏX¸p!‹ÅBxx8÷Þ{/‡ÃÁgŸ}Æœ9sˆŠŠ"??ŸÜÜÜfõ¶WÎår1|øp"""8uê;wîdáÂ…íöÇår1bÄ"""8zô([¶laáÂ…„……qèÐ!öìÙÃ]wÝ…Íf#33“»îº‹°°0ßÒ¹MsÔÖÖb2™Z}mL&“&M",, »ÝÎG}DJJŠßðͶÚië7mÚÄìÙ³}¯M^^^»m^ü^ñCVPPÀÉ“'}9fD÷²X,¬\¹’%K–˼yó¸ë®»:]¼¯Bqùyó¸¸ÝîKZ-¯5Z­ÖWw ]Ž$ÀBšbNÕʳKÝ~ñÅéR·w]ii)¾$]½zõâË/¿¤²²Ò7 %==ݯ¼Ùlö•ïÑ£G‹CÏÛ+§R©|ó<ûôéömÛ:ÔŸ¦ÇõíÛ—½{÷æ{î]>µ´´›ÍFvv6p!Š®(Š_ƒƒƒÛÌ®V«q¹\>žÒÒR_ΕââbÜnw«yS¼åËËË K?{Š¢““ƒÃáh³\ ûÓš¸¸8êêê|Ó¡<o´Š·Z­–›o¾™ÌÌLrss}C)+++q¹\TUUa4‰‰‰AQJKK}S‚¼Ó¤Zk§#çØÒkÓV›B!„Bt•N§óýÞÐаzY×ÅšöYˆ«•Œˆ •JEqA)n·ûª»v» ó IJéÑ¥zL&Ó§O'++ EQ á¶Ûnk5êl2™˜:u*Û¶mC­Ví»0::DRR111­– dZ£Óé˜5k»wïæÀèõzHBB‚_ûõëGPP$++ •J…Ùlfòäɤ¦¦RPPÀ»ï¾‹Éd"!!Á÷w0pà@>ùän»í¶ÛIMMmó›¾6±±±¾Œõmµ)„B!DW êë/|¡[SSChhh@ê­©©ñH†&³ „¸ZuÇü…Ž´ÙZ™–Ö‡V7Ùç}Þôwíw Œ‹åX ‡ÁUWW³wó—L™=†Ð°p4jMÀW,ê4lÖz>ù`=ÓoŸBddd·uÇjµ²~ýzî¹çž€”¢5ÕÕÕ$$$tw7®kÞk¨ÛíFQ\.‹…¤¤¤nî™B!Áãñ`³Ù(**Âáp`·Û:th—§'¹\.rrr0 ´Z-jµ:`A™øøøKÆŠV«E£Ñ´š‚A–^¯Oì@#à\ß=¼™—=ýN“ç4ÙÞÚM~Gnþ¯h²" F£{£§½‘¥’êªÊîî±q 4:]46ººä\GÕ××c4Ñjµ=z””””.•B!„B\F£“ÉDcc#†ââbzöìÙ¥:‹‹‹}AŽ@8¼Á!®v’#&@L&}&±û½<œ­/®sÅY«|ôÒ6ú»±Íå—/—sçÎññÇóÁ`µZ6lX—Ê !DG¼øâ‹ÝÝ…N dŸEaùòå«O!Ä“J¥"<<FƒF£¡¤¤„ÊÊKÿ¹²²’’’_}žžä]!Uˆ«Œˆ  P˜—ÉÎj(++¤¢¡¸[û¦ 8"ˆØÑ:Ð-}0`´ßvGË !„B!.?o€$((ˆððpªªªÐétœ8q‚~ýúÕ©ú*++9qâ„o¼Z­öŠ D0&44´[¾xâRH &€4 ·Ü6…©'ˆª Æín= ë• V«1›Íôë×O’¸ !D²³³0`@§W]B!®wÞÅ4Š¢ ×ë9~ü8=zô ))©Ýœ1.—‹ÂÂBŠŠŠ|9a=5Éh4Êÿáâš"˜Óét2²C!®1¥¥¥¤¥¥uw7„Bˆ«Š7P¢V«‰Çãñ`±X€ ¹^òóóINN&**Š   _PÆåra³Ù¨¬¬¤  ­V‹Á`@¯×£Óéü1] ÆFbbb;µ IDATºv¢B\aˆBÑí<ÙÙÙœ9sFCrr2S¦L ¬¬Œ;wbµZ1L™2…¸¸8***ÈÊÊÂjµĬY³öÕëp8øøã=z4©©©äçç“Ãá **ŠéÓ§sìØ1Š‹‹ùàƒHMMeÀ€lݺµY'L˜À™3gHNNfðàÁÀ…¼.£Fb̘1¬ZµŠ›o¾™°°06oÞLUUŠ¢Ð¿ÆÏúõëéÕ«—/`Ÿ““ƒÍfãæ›oöµcµZ[<`Ù²eôíÛ—ÒÒRÜn7S§Nõ%M,..fçÎ8"##q:~›„Bü@©T*´Z-‰‰‰TTTPUU…Z­¦±±‘ââb p»ý±Q«Õh4 :­VëûÙtE¢® •‘0âš$!„Ý.//’’-Z„J¥Âåràt:Y»v-sçÎ%::š³gϲnÝ:î¿ÿ~<k×®åŽ;î 66–††¿Õá\.Ÿ~ú)C‡%55›ÍÆæÍ›™?>áááìß¿ŸÝ»w3cÆ Îž=KFFñññ,^¼¸Å~j4Ž=ÊàÁƒ©¨¨ &&†“'O2f̵µµ$$$ø‚$áááØívÞ{ï=RSSéß¿?_ýµ/sâÄ n¹å¿6L&S‹Ç&$$àr¹5j‘‘‘œ8q‚mÛ¶±hÑ"ëׯ箻î"::š¼¼ÍÈ‘#ùòË/©¬¬¤²²’Þ½{>¬º\.öíÛ‡ÅbÁjµR__Ojj*Û¶mÃn·ûF¬\üM^kÇz÷EFF––ÆæÍ›())Ál6û^§¤¤$Y¾S!DÀ4 ƨT*ÂÂÂÆf³aµZihhðý¿êñx|ïÃ;¦ét¤Ža¼uét: &“Iþ×< Ä!„èvááá,Z´ˆ³gÏräÈvïÞÍ‚ p»Ýèõz¿²N§µZÓélõ›0•JEJJ ÇŽcÔ¨Qèõz ‰‰‰Üyçmö%77·Õ©IéééôìÙ“ÂÂBòòò9r$õõõœ:uŠÚÚZnºé&àÂtª­[·2uêT¢¢¢¨ªªòõ;--3gÎ`·Û¹ñÆ›µÓÚ±-£÷ClK¯“BHMG±x!!!ûFÃ4ã  4 Êtu$Œ׋®OÌB!ºÈáp`·ÛéÛ·/Ó§O§¦¦‡ÃABB%%%”––PTT„Çã!**ŠøøxŠŠŠ¨ªª ±±Ñ÷`øðáôèу7âv»‰§¶¶–³gÏFÍ466FÓÔÕÕ’’ÂâÅ‹›=¼#kÒÒÒÈÉÉ!<<­VKZZ§N¢´´”¤¤$àÂ&“‰¸¸8E¡¸¸Ø·zÝM7ÝÄ©S§8uêýúõóõ×;¦­c[“@qq1eee”——ãp8ºö¦!„iHQ«ÕhµZ_îN‡^¯÷%äõæƒñ.U-A!¾'#b„Bt»ªª*>ÿüsêëëQ…1cÆøò½Ìœ9“ÌÌLE!$$„;ZMHHÓ¦McÆ èt:L&Ó¦MóKÖ;iÒ$Ö­[ÇŽ;˜:u*sæÌ!++‹/¾ø½^ÏàÁƒéÛ·/Ç'++‹o¾ù†¹sç¶™@°W¯^¬_¿žÛo¿€   T*ÑÑѾ—}úô!//7Þx“ÉD=|Á”èèhêëë›Ím2dÿú׿˜9sf«Ç¶Æd21cÆ 6oÞŒZ­&..ŽÐÐÐK{3„Bˆ6\Hñ>oúeH[å„Ðÿ:ÒfkeT-ìS7Ùç}Þôwíw Œ‹åØÅ !Äõ£ººš„„„îîÆuÍ{ u»Ý(Š‚ËåÂb±øF„ˆ¶mܸ‘´´4úôéÓÝ]B!¢½@̵ °°ÐÐÐf+;]‹çr-Ñëõé€h€ë»‡w).ÏE¿Óä9M¶·v“ß‘›ÿ+ ©IB!Ääp8(,,$%%¥»»"„BLÓÜ1¸¢mˆB!® ãÇ“’’Òît#!„Bq}’1B!Ä4xðàîî‚B!„èF2"F!„B!„â ‘@ŒB!„B!Ä"!„B!„Bˆ+D1B!„B!„Wˆb„B!„B!® Ä!„B!„B\!ˆB!„B!„¸B´ÝÝ!„תªªîî‚B!„W5 Ä!„³ÙÜÝ]B!„¸$6›­»» ~ dj’B!„B!Ä"!„B!„Bˆ+D¦&ÛíÆápàñxº»+~T*ƒµ:pq·¬¬,>ûì3NŸ>Õj%))‰Ù³g3{ö쀵ÑÔâÅ‹™3g³fÍê–ã/W]B!„B!~X$ 6›ãÇOpôè ÝUŒQ©T8ì.úèG¿~iu¹Î?ýéO|ýõ×<ðÀ<üðÃ466ròäIBBBÐc!„B!„âú%˜°Z­|¾ç T˜qËDT*UwwÉÇãá›oޱgÏçŒ7†àààK®+33“œœ^ýu¿zúô鈮 !„B!„×5 Ä€Õj¥¦¦–q7$;ûsBBZtÔ×[;v$z½. í;Nþ¹öNMX‹ûõJÎÌž=±Z­] ļþúë<ðÀ­ÖÑØØÈ+¯¼ÂÞ½{©¨¨ 66–ûî»3føÊ,^¼˜ñãdzÿ~NŸ>Mrr2?þ8ß~û-ëׯ§¤¤„aÆñä“Oá;nÏž=¼÷Þ{TVV’žžÎ¯~õ+’““;ÔfgûðÑG±nÝ:ªªªèß¿?=öñññ|ûí·lÙ²…“'O’À/ùK ä«ÿÕW_eÇŽ8&L˜À#<‚Édºä×]!„B!ÄõA1àv» 6a³5pà IôêÕ³ÅrçÎåc³5<c³Ù©3¥ÒÖ»Åýºº³Ølv‚ƒM¸ÝîKnÇn·SXXÈM7ÝÔjNGRRüã1 lß¾?ÿùϤ§§Ó³ç…×¥¶¶–×^{+VÇÒ¥KùùÏÎ~ô#þ÷ÿÇÃïÿ{V¬XÁ“O> @QQÇgÙ²eÄÄÄðÚk¯ñè£òþûïc4Ûm³³}|ï½÷ÈÌÌdÉ’%DEEñõ×_û‚B555lذåË—“˜˜ÈÊ•+ù¯ÿú/>üðCt:/¾ø"555¬X±—ËÅ3Ï<ÃË/¿Ìc=vɯ½B!„Bˆëƒb((ÈÄáÃG¨¬¬nq¿Õj#11á2´k$¬áNgE‹ûõŠ…  A]n§¸¸Çã7J¥%wÞy§ï÷… ²aÃŽ;æ r„‡‡³páBn¼ñF~üã“™™É}÷ÝGdd$3gÎdýúõ¾zEaþüù¾Q'O=õ÷ÜsYYYÜzë­í¶Ù™>*ŠÂ;ï¼Ã³Ï>K¿~ý˜6mš¯|DD , ÿþüä'?áÓO?¥°°ØØXÖ­[ǪU«|çò³ŸýŒßÿþ÷ˆB!„B!˜@ÒëuddŒí†võübÞÈËÞNTTp! Öò4(¸0âeëÖ­>|‹ÅBQQ‡Ã¯LÓœzõê\Hxì ^ôêÕ‹††_™ž={’’’â{®Óé4hyyyn³£},))Áf³ùE-Ñé¾ÕÉd¢¡¡ÂÂBÜn7?ü°/WËåÂf³µZ—B!„Bˆ Ä€J¥¢¶¶–sç »»+mª«³t)‘pxx8f³™ýû÷·¤°Ûí<ôÐCLœ8‘E‹Ç#<Òæ”¨–úÔ‘~êt:t:]§Ûl¯|}}=paÊ™F£i·Mûë]9êµ×^k3X%„B!„â‡I1àñxˆ‹g̘QÝÝ•6ÕY껼¬öüùóyë­·˜6m‰‰‰Íö?~œÚÚZzè!ß¶Ó§OS^^Þ¥vkjj8{ö¬ï¹ÇãáØ±cŒ7®Óm¶W>11·Û͉'0`@§úGPP»wïæ¶ÛnëÔ±B!„B!®êö‹ˆŽPÓþŽüâ Voýœ­{rؾï0Û¾8DæÞ¯q)J§Újt¹È9z†²ó5ïc{æÏŸO¿~ýøùÏÎêÕ«ÉÍÍ¥  €ÌÌLöîÝ‹Ùl¦¾¾ž5kÖPWWÇŽ;|« ]ª²²2>úè#:Duu5Ë—/Çív3a„µNII §Ýòaaadddðüƒüü|l6{÷îõ›*Õ­VË‚ xùå—9x𠊢P^^Ή'ºtþBü,Y²„#F4{üæ7¿éÐñ÷ÝwŸ~úi‡ŸÒå¬ÛkÛ¶mŒ7Ž‚‚¿íŸ|ò 3fÌðæÈÊÊbîܹ|øá‡~e[Û~)æÏŸÏo¼qÉÇ;NFŒAaaàG“vµoB!„—“Œˆ m4É+.ç|Us§ûçq6ºØu9SGw¨¼ârŽœÊcÌ),=ÏñÜB&ŽìبöúØZ­–矞O>ù„íÛ·óꫯ¢V«éÕ«³gϦgÏž<ôÐC¬\¹’×^{Ñ£G“‘‘ÑåvûõëÇ7ÞȲeË(..fРA¼ð hµÚµ9þ|ž{î9rssùãÿØnùßüæ7¼øâ‹<òÈ#¸\.úôéCïÞ½;´õ½÷Þ‹Á`àÅ_¤¬¬ŒÈÈH,XàKü+„hݼyóxä‘Gü¶iµ×ÏUË—/§°°?þñ>vêÔ©¬[·ŽgŸ}–_|¸0ZpÙ²e,Y²„Ž;ÆóÏ?OQQeee¾c[ÛÞ“&Mj3—VwºšûÖ’®ü]!„âÚsý|º½Êå–1iÔÀfÛõ:-ƒúÝÀ¡ã¹ ¾1¥…#ý9•Çm/$æ5‡‡òø_þÉèAi ú€÷¹5jµšyóæ1oÞ¼÷/X°€ ´züŠ+üžët:²³³ý¶5ŠU«VµzLgÛ9r$ÿú׿:\>44”%K–t¨ÿ›6mòý®R©¸çž{¸çž{Úì³¢9½^ï˵$šûÍo~ÃÝwßÍÎ;™8q"/¼ðƒfêÔ©¬]»–©S§2wî\~ùË_úŽkm{W<üðéçr¸šû&„ׇÃACC‡ƒÆÆFEÁãñt)/åÅT*jµN‡Á`Àd2a0V¿ÝA1WÀ¾C'Ö¿O«ûS’âÙ²û+ í@ŒÛíÁhô¿èüþá_Ñ ŒBt‡ÆÆF–.]Ê®]»(//'..ŽŸýìgÎŔ͛o¾Iee%ýû÷ç©§ž¢gÏž®ÿ½÷ÞcõêÕTVV2hÐ ž|òÉfù²êëëyà˜>}:?ÿùÏ}Ûßzë-þùÏ™™É]wÝÅo~óÜn7o¾ù&ëÖ­£ººšÁƒ·X/@BB‹/æ¹çžÃ`0°}ûv¿iF­MãêÈô®ÿüÏÿÄívóÌ3Ϧ7Ž ð«_ý ¸°ºÝ”)SøøãùíoË~ô#æÌ™\˜ž5iÒ$¾øâ Nœ8A=xòÉ'2dŠ¢ðòË/³iÓ&Eaüøñ~í·õ:\‰¾-_¾œM›6áñx˜2e »víbÙ²e$%%ùõsïÞ½¼üòËœ={–èèh¦M›Æ#<Âoû[L&O?ý´¯ì›o¾ÉáÇùÛßþÖêq­ý]466òÒK/±uëV“&Mâ±Ç#((ÈwN'NäóÏ?çÔ©SôìÙ“ßþö·>|˜5kÖPRRˆ#øÏÿüOߊ„B( ÔÕÕùMÝoš‹òâ`LW3EQP»ÝNmm-F£‘°°°Vâj$9b®€ªZ aÁ­_$<jMÛoÅÛkw V«p5ºü¶‡‡¤Bq5hll¤¡¡Áïáv»Ñét$''óÜsÏñá‡rÇwð‡?üÁ·„}G°sçNž~úiÞÿ}Ìf3‹/Æn·w¨þ·Þz‹õë×ó?ÿó?|ðÁÌœ9³Ù ®¢(<õÔS¤¥¥ùaàÂóƒ>ÈŒ3Ø·oŸ/8²bÅ ¶mÛÆ_ÿúWÞyçôz==ô-žÇO~òBBBxä‘GøÅ/~A\\\‡_ƒ¶dddpàÀßéƒòÊx}õÕW$%%Ñ£GfÇ×ÔÔðÒK/ñ裲zõj à (,[¶Œ½{÷ò·¿ýW^y¥YÞ­¶^‡ËÝ·¥K—òùçŸó÷¿ÿ—_~™šššs×ÔÕÕñÄO0{öl6nÜÈßþö7¦L™ÀôéÓÙ½{·ßÈÎ;™6mZ›Çµöwñì³ÏRTTÄ[o½Å»ï¾KQQK—.õ;§åË—ó«_ýŠÕ«WÓ³gOî»ï> øë_ÿÊÛo¿Maa!ÿ÷ÿ×ì<„¢+*++)++£¡¡ǃÛíFQÜn·ßûÍãñø=Án·S^^NUUU@êâJ“@L8œNg»—«íd¼Yû¿eDÿ¾m–;øFŽœÊG«ÓRQUÛé¾ !ĵà£>b„ ~¯¿þ€»ï¾›ÔÔTzôèÁ¢E‹HLLäÈ‘#®[Q,XÀ!CHLLäé§ŸF¥R‘™™ÙnýŠ¢°råJ~ûÛß’žžNll,3fÌðû&Îãñð׿þ›Íæ7*¢-N§“wÞy‡ßýîwôéÓ‡=zðßÿýßX­ÖfS6½4 iiiŒ1¢ÃçßžqãÆa±X8}ú4paäÇüÇø­Z·oß¾f#Y¼"""X²d  Àl6sÿý÷SYYIAAN§“?ü%K–––Frr²ßôÏö^‡ËÙ7‡ÃÁG}Ôjßšª¨¨ ±±‘ñãÇFjj*7Ýt7ß|3 ¾¿™ªª*Nœ8AFFF›ÇµÄjµ²fÍüqÌf3±±±<ôÐC~'ï9ÝtÓM˜Ífî½÷^|ðAzöìIÏž=™={¶ïßBt•Ûí¦´´‹Å†!>>žn¸ÔÔTRSS¹á†ˆ'$$Ä/ ,`±X(++Ãív¬N!®™št‰, ï¬ù•Q˰ÚNª×騳6øŠ¹ÿ©çydáí—U‘’GDXÛ#[úÜ@½ÍŽN¯åãÍ{1t LëElT8Iñч)„Ý¥éT“‹ÕÔÔðÙgŸñõ×_c±X(,,Än·w¸î^½z‘ššê{®×ë2d¹¹¹íÖ_TT„ÍfkóæyíÚµ>|˜Í›7£×wlÊhQQ.—Ë/±¬ÉdbàÀœ;w®ÅcŠ‹‹ÉÊÊbàÀ<óÌ3¼öÚk¨Õ]ÿ^%$$„aÆqàÀúöíËž={xá…8qâ»ví¢wïÞìÛ·'žx¢Õ:šö#11“É„Íf£°°EQüγiÙö^‡©S§^¶¾µÙ·¦RRR1bóçÏg„ Ì™3‡Q£F`0ÈÈÈ`×®] 0€ììlFMppp›Çµ$//·Û̓>èûÿÝåraµZ[=§Þ½{¦h™Íf_m6[«í!Dg”——û‚ Ãl6·˜T_«Õ¢Õj Æl6SUUE]]jµÚw] Ôý‹Ýn§¢¢"`#D…¸dDÌ%R«ÕØ YËÛçw°õÄ>Nçžk±ìÄQø,û ß¶×þø(i½z0{êh¦õj³­¢²J>úl7k·ïã«#§‰‰dû¾Ã<õ·7Ø´ë+6íúÒ÷°;œ:C!„¸z444pÿý÷SQQÁ¿ÿû¿óÜsÏ‘––†¢´=â°=z½½^ßnýÞ¥¡ÛúÆmäÈ‘„……ù%oÓéô}£ØR¿ZòÌ3Ï0kÖ,–.]JQQ‘_bó®š8q"û÷ï'??FCÏž=™4iÙÙÙTTTPVVÆÐ¡C;\Ÿ÷Cvcc£o¨zK:ò:\®¾¹\®6ûÖ”Z­æ¥—^âùçŸG§ÓñÄOðë_ÿÚ·Ú´iìÚµ ø~ZRGŽ»Xhh(ï¼ók×®eíÚµlܸ±ÕQRí£BtUee¥/£( 111ÄÆÆvheC­VKll,111¾d¾œ¦‚12MI\K$s‰ŒF#nè‹ëtÊðP,wG²´lÿÿ/‘µïs¿ ‹Ñ '4ÈÈ©s%¾mZ†° V믵XùdËç¼õévŽ)`î-cYpûDúôLà/¯®Â¨×³ò™ÿŸÏŸÁÌŒÜ:a8ÓÇ eçþo9v¦à²ž»B\iÇŽ£¦¦†G}”Þ½{ÄÉ“';µsuu5gΜñ=÷x<|ûí·ôîÝ»Ýú{ôèÛíæØ±c­ÖŸ˜˜È3Ï<Ão¼Ñæ sÓÜ/ÉÉÉäääø¶¹ÝnŽ=JŸ>Í“¼öÙgœ!„4›Í曎¤( ±±±„‡‡wºžððpbcc}Áü4¥‹ó qµ’@Ì%Òh4¤§ßˆ®ðûNªC8«‰Ãsø¯µ/ñþ¦µØ. k¿mâH¾:všÏsŽ·ZçÃx‰QwÿŠ'Ÿ}-»s¸uÂ0î›3…iㆠÕh8“_Ê_Ÿ ëí?±â!9!æ¢>©™1a.EáÈ©üËsâBÑ Ìf3õõõ¬ZµŠÚÚZ_^—¦+ EDDPTTäûPwñóÒÒRÞ{ï=¾úê+ªªªxá…p»ÝLž<¹ÝúÃÃÙû,Æ ó½Oíwñß…V«å¾ûîcéÒ¥ìÛ·EQ(++ãèÑ£—tŽBÑuuu¾Q‹aaa—„ñ ',,Ì—7&Ðêêê^§—ƒbº $$„Góoß4ñ&ê&ñùàr~Ÿõ ÿ·úmJÊʹgæ z-ÿ\µ…?ÛÍæ]_±jÓ>ؘ͋o­cHz*k—ÿž¿>±ˆ»gŽ'Èä¿Tõ±3ù<²ðv z]›ý˜Ö‹ŠêZê¬B\zõêÅ£>Ê+¯¼ÂܹsÉÊÊbòäÉ~e,XÀ¦M›|yB.~žžžÎ¼yóxþùç™7oùùù¼òÊ+hµÚÕÿûßÿž>}úø–µ~çw¨­mž<}Ñ¢E 6Œ'Ÿ|²Y›Y³f1hÐ î¹ç~÷»ßðÄO0nÜ8üq~üãc±XXºti³i%Ï?ÿ<)))Í–Ô~ê©§8xð ›7o¾„W¶¹ŒŒ ¬V«oigÀ÷ZŒ;ö’ë}òÉ'1b=ö=ô±±±~´Ž¼WªoÞ›Œ‹sÅX,¶oßÎÂ… ™:u*kÖ¬á/ù‹ß4²éÓ§³ÿ~ß´¤Ž×ÒßÅ<ÀOúSž{î9&MšÄâÅ‹9~¼õ/s„âr°Ûí¾ E!**ªËuFEE5[Q)Pìv;‡#`õ q¹tÇäᎴÙZU ûÔMöyª›ìÓ~÷0:Àh±XŽâ|}}=/¾ý…s h´ C‹åVгhÛòå˯È18V!DëNœ8ARRR§ƒ0YYYŒ5J‚0BˆkžÇãÁn·ûšòºâ«7УbdDŒ¸H ¦ t:ƒ @}²…)@­\LÔ½B¨šb`K¯Ó,Y»Œ76®ÂR_ßbÙ¦TjŠÒú<ÊqCoäÐñ\¿mÉ 1—_½ÙÃm6¯¿þú[Zóüùólذ·ß~›•+W²zõjjjj®HÛB!®^çÎcçÎÔ×ד——DzeËÊK¦dçIDAT¸÷Þ{/©®-[¶4›Ö&„×*§ÓéKÒk4V¯Ñhô[A)š&?âjÕù儳ÙLMÃÅÿÜ« í¥¨††ã jÿálšHŽ)rkøfç«ônŒáöá¹!9™– JëÅWGO3r`Z‹ûU*U³!s‰±Q?“O¸®Ïå¼L&“&MÂd2]ö¶òóóÙ³g'N$>>ÇCee¥|c)„‹ÅÂÊ•+Y²d ±±±Ì›7»îº«ÓõpòäI&Nœxz)„WžwÄŠÛí¾¤•éZ£Õj}uÚåH,D I ¦‹´Z-a.•mׄèHKëÃ=Cg²aÿNŽÙò©iDêŸhW¥Ó ÜÁ)yþä§Ä406¡?Gõ ¬ÄFE°ëàQ†÷ï‹ZÝ|ŽâÁoO‘Ò#Îo›ÝîÀÔJÞš«J¥"%%å²·ãv»Ùµk3gÎÄl6û¶ÇÆÆ^ö¶…B\ýÈ›o¾Ùåz’““Ù¿z$„ÝÏ;ZårŒZ¹¸~!~h$ÓEz½žÞ‘=(+«ÀÐÓ?èQé±`6Grï­wÒØèbÛ¾=(=JEš‚ºgpóÊÒ‚)KƒË±mÝ×ô×%qçäê½5cïoØÉnç—[æ\QU5F è €ÛíA­Vq"·ˆúì\­V+Û¶m£ººEQHOO÷­RñöÛoÓ·o_Ž?ÎØ±céׯŸï¸`±X˜2e Š¢°jÕ*222HHH`ùòåüâ¿Àf³ñÑGñÓŸþ¸0hÇŽÜ}÷Ým¶»bÅ RSS)--Åãñ0qâD’/UT[[‹V«õ Âtô¼V¬XAïÞ½)++`ôèÑœ9s†ŠŠ 4 S¦L!.îBÌãñ°eË***ÐétL˜0„„„6ëïHΟ?Ï®]»°Ùl˜L&f̘App0‡íÛ·SRRÒìÜ Ù³g‡³ÙÌ”)S ºô7_!„Büà¨Õj_°ÄårlTŒËåºlA˜‹W¼âj$˜.Òëõ LOg߉sÐÓ?;w•ÎFCƒ“ɈN§åÖñ¹•‰|{â8™Yû8\‰zxDóiKqF,q°ÇVÆW[^&¹!œ»'ÝF|\,÷Ü6-»¿¢ÁÞˆA¯Åát‘kæ–ñߝ޴òã-üìîXmö'îïT¢°°0ìv;}ô)))ÄÇÇc±XçÞ{ïE£Ñø7bÄV¯^͹sç(**¢OŸ>ZѦ­v].Ç'""‚S§N±sçN.\èw|mmm›ÓŸÚ«ĈDDDpôèQ¶lÙÂÂ… ãСCìÙ³Çoøú°aÃˆŽŽ¦  €M›6±páÂ6ëo¯QQQlܸ‘Ûn»èèhìv»ßê\ƒfÊ”)~çn³ÙÈÌÌä®»î",,Œ/¿ü’½{÷ú-¥*„B!D{t:v»€††BCCRoCC 96D§Óµ_Hˆn&˜.R©TÄÆÆtXÝl½+g_û–±ÃFømÐïFô»‘ó••lØŸÍцlÛ¶­ÙñÁÁÁÔÕÕu¹þ¾}û²wï^ÂÂÂ|ÏsrrüꊎŽ. Oˆˆ ¼¼œ=z´ùºµÕ—ËEpp°¯Þ¦IÒT*QQQÍν´´›ÍFvv6p!a™¢(í¾ÎB!„B4e0¨¯¯G¥RQSS°@LMMM‹9.Áp§fÂK1 Ñh±ë¹xkm¬‰£§rˈ‹ŽŠâ§·ÎÅét²é‹l¾*=NU5êþ•”A!+Ïí ú“] èÃm'7}ƺû¹îÔáåååìØ±ƒI“&a6›©®®Æét^èc;Qï jµºÕ²­%Öj«Ý¦Z»˜GFFât:)((h6m©3õ_<Ìñâç·ír¹P«Õª¿µ2*•ªCÉŒ›ž»^¯'>>žÛo¿½Ýã„B!„h‰÷s¨÷sfii) ]žžär¹(--Åh4^–`Ì•XDˆ®’ t¥ E©k¾fýy¥¶Ýcõz=SGÜÌäž#Э®Àñyy«eÕ½‚/,Ýû Oúï~¶›õûåŸÏä—òæšíŒܯÕ:.UUUF£‘˜˜E¡´´´Å@€¢(äääàp\xM233™9s&AAA9r¤Yy“ÉDcc#%%%À…Q‹¥Óí¶Ô¾V«åæ›o&33“ÜÜ\_†öÊÊJ\.×%ÕßÇãË%S^^ŽÍf#&&¦Íú5M›}ˆ¥¤¤„ªª Ë766¶;—6..Žºº:rss}ý’eü„B!DgFL&jµFCqqq—ë,..F£Ñ´ùí¥22"F\dDL€$G'’{ò4Œðÿ‡žzEivcþ|%_ù†üºRÊܵTpö5 }¤'¹t¨ƒ5Ô2•wš¯²ÎÑ«1Š©7ãÿóOžxp.齓šÓèêÚô”ÔÔT x÷Ýw1™L$$$´°p8:tˆ¤¤$  òåEYµj‰‰‰DFFúÊ«T*&OžÌæÍ›1™LDFFÜév[j?&&†~ýúÄÁƒÉÊÊB¥Ra6›™½Å2!!!Lš4‰Í›7£Óé0™LLž<¹ÍÄ»:ŽY³f±{÷n8p!ÑÀ¤¦¦vúœ„¸V½øâ‹<ú裗¥îÚÚZ6lØ€ÓédòäÉÜpà íö¡µß»êrž§B¡R©Çjµ¢Ñh())!88Ø7=¾³*++)))Áh4¢Ñh>"Æ›B@ˆ«]à'å¦ÍÖʨZاn²ÏûSÝdŸö»‡ÐF‹År,ºKKKÙºe;ç"k©äƒÜ˜WÏÃú阌&œø†²Æ*ÊÝê"ñô FÔ~,Ì£xÀ®:;%6\5B†ÇR·«Š$ÝЃp—W¹ÂÍÃÇ‘1fpó:<Þxã]¦ß2Å/IlwR…7Þxƒ|°»»"®3ÕÕÕJ-:Ï{ u»Ý(Š‚ËåÂb±”Ô<Ü.g€bË–-ÄÅÅ1xð`Ünw««3\+˜šš²³³Q©TÜqÇ­nBñÃãñxP…ŠŠ ªªªp8Øívúõë×é`Lee%'NœðZÑéthµÚ€Œ mu•ÔŽ*,,$44­Vëµí§a]£×ëÓ;Ð8×woî 7øR²zšlkÊÓdßÅ:róE×Q—1 Ñh°Ûh(ªÅí6ú}(×&‡°bë§()F4#CPiÔ@P›sÂܵN³ÌFc™·C!x@u»J0T¹‰Š&ls#à 72öÖ¡ÄÄÆŠVÛr†ð²² ö}±Ÿ†Û%ô¸\Î;×bÎ!„¸Ò²³³0`@‡>ÀUUU1dÈàÚ_"sïÞ½œ9s†˜˜ßÆ–¶ !„øáR«ÕDGGãp8P½^ÏñãÇéÑ£IIIíæŒq¹\RTT„Á`ð r*Àa4»„âJ’@LDb£™#u ¨ô]P&„\øé°·x¼ÇæBeÒà,°âª´£Ö©ÑÆaÝ]‚¦Z!ÔdBs tc©ÉI4º\Xë­4ØjÙ¾#«íΩT„ѧoojêjÚœÒr%y<NŸ>MFFFwwE!(--%--­Ce=ÏuóÍXZZcÇŽ%??ŸÃ‡·ºM!Ä“÷ÿ;µZM||<ǗDZ¸¸˜üü|’““‰ŠŠ"((È”q¹\Øl6*++)((@«Õb0Ðëõèt:¿@LWÿOõæYâZ"˜fðàA>|÷™<´7E´YÞmiD¬Å~¶¥ÒŽÆl@¥WÓ°¿ƒM…94 ýA+#"SI˜@c£ƒ††<öï‚9FSÇ“P™‚Œœ¯¬fèÐ!¾¼+ÝM¥R1cÆŒîî†â*áñxÈÎÎæÌ™3h4’““™2e eeeìܹ«ÕŠÑhdÊ”)ÄÅÅPQQAVVV«•   fÍšåws8|üñÇŒ=šÔÔTòóóÉÎÎÆápÅôéÓ9vìÅÅÅ|ðÁ¤¦¦2`À¶nÝÚ¬&L ¢¢‚²²2Þ}÷]¢¢¢˜;w.[¶l¡ªª EQèß¿?ãÇoó\Ýn77n¤¢¢­VËäÉ“ILLÄjµ²yóæëêìy^lß¾}ÔÕÕ1}útEáý÷ßgÊ”)$&&6+ÝwL!ĉJ¥B«Õ’˜˜è›¦¤V«ill¤¸¸˜‚‚‚f+ zü6†äýÙtÚOWb:’ÝA1Ò¿È>|÷ß_„}ûJO­Õ…GÎ\ ®J;¦fìGÊq¬ÇèÒ]b$Ôe`@jááahµ"Ãááá„„„IHHHwŸŽB\1‘‘‘Ô×׳cÇRSS}ãââb"##}£4z÷îÍþýû©¬¬ÄápBll,€ß‡1ÇÚ5kHLL$==ÝW—ÕjeÇŽÀ… ¢tm59µZËåbß¾}X,¬V+õõõm£R©|C¨o¸á"##)++#99¹Åº;užÕÕÕlܸÑWfܸq¤¤¤pë­·òúë¯Ë¿ýÛ¿ué¼…Bü°4 ƨT*ÂÂÂÆf³aµZihhðý¿ê«V«}ӑ:„ñÖ¥Óé0 ˜L&Y¢Z\ó®Ö@Œ‡îYÑ©K4 a.5°í*EUb'DcÄ\lÃLéýGc 2¡×_˜é ¸˜Ífôz}ww_!ºMxx8‹-âìÙ³9r„Ý»w³`ÁÜnw³ë£ÓéD­Vãt:[ý&L¥R‘’’±cÇ5jz½Þ7:ðÎ;ïl³/¹¹¹­NMò;¼ÊÊÊØºu+S§N%**Šªª*œNg›õ_üÁÓår¡ÑhZ­K¥Ruê<###ùÉO~Ò¬¬÷ulúM¤BÑQMG±x!!!ûFÃ4ã  4 Êtu$Œ—àŠ®†ÔQWk æšd2™–šŽjËb}H™ŒF«E¯ÓLXXáááDDD\U« !Dws8¸\.úöíK¯^½X±b‡ƒ„„¶nÝJii)ñññáñxˆŠŠÂd2±uëVªªª0›Í466¢Õj}î†N]]7ndöìÙÄÇÇS[[ËÙ³géÝ»7—Ë…N§Ãd2QWWG||<)))­NMºXee%&“‰¸¸8ÅÅÅ 4ø~´Œwš©÷w·Ûí;Ÿ²²2¬V+±±±œ|8YYY|óÍ7Ì;·Ã ûôéC^^o¼ñ&“‰=zøíC† á_ÿú³gÏöû]£ÑðÅ_P[[‹ÑhdöìÙhµÚV뺔ó¼Ø "55•ÄÄDÞÿ}zôè! …BtÚÅ÷5Þç-bÚz.D<­ü~Ýè® i·µ2:V5y4=NýÝCèƒ÷§Åb9~ñ…Bqý¨®®n7Yªèï5Ôív£( .— ‹ÅBRRR7÷L!„Ý¡½@̵ °°ÐÐÐf+;]‹çr-Ñëõ7 ±ÉOp÷€ï2ž&¦Ü´¬#7þW<8p½Žˆi‰D^„B!„â2`…€Ì={×oB!„B!„"!„B!„B\q*•Jéî>t‡ë)ÓÚ0¦–¶·6L!„B!„WÆù¶uæÞþšt=b¼.NâÓÒþÚ+×!„B!„B\LQ”ã´~ßÞôÞþºr5b:kïqWÆ ¸¿•dRB!„B!D÷©®®ÞÏ÷«#yïÙÿ_{wóâÆypü7Zɯaã]·ëÆmäÐ@ 9„Òô”[H¡A¡9†ÜÒSýrJ‹Ï&/Ð\‚{i „L>˜Þ !YìÕÚ$û½õ°;ñXÑËH­fFŸÛÚéÑÈ—ýò<ÏL2K(mÀ)sˆgøbN»èƒáÇíÛ·ÿ¶¤±9¼ÿþû·bÄïì§?ÎXJ\Æ©bˆ™Eöžãß¶W_}õ_I’üouÀõu||üá›o¾ùE<9&*µÞ×uU!fÅjÜž0O,KŠˆ^Dô>ûì³?–iyR¿ßN§GGGqxxøÄãèè(:Nôûµþ¿ÀH’¤wãÆwãô÷ó˜¾>ŽGE£‘ÄåK—âé§7£ÕÌ÷UtºÝ8<8ˆ‡ÛÑïGlnnÆùóç£L³{€õµ···ê!Pb<øË³Ï>ûADtãq|ÉF˜I³_òþâ^ê@Sö3δð’ Ó?ý{/N¾ì$NfÆt···ßØÝÝýóYÌŒ9<<Œv»—/]ˆk;?Š^þû÷ïÇW_}ß~ûmDD\¾|9žy晸zõjDD´šÍhmnÆææft»Ýxøèa´Ûí¸råJ\¼xq©ã˜f{{{ÕC˜ËÁÁÁª‡PkI’ôîÝ»÷N&¤&d²Ë’†oÀ3J©ƒË8« 1yg»,z~v³Ÿ^<Ž0Iœ|þîÎÎÎÛ·nÝúøå—_þÓ`0øyÄÉÌ•¢ôz½ØÝÝ çÏÅÏ~z=Ç[óܽ{7þþñÇñé??ÿ|þy´Û푯±µµ¿|ñÅxå7¯Äk¯½Ï?÷\4›Í¸º}5¶®ôcïÁ^ìïïÇÎÎNlll6vXÄñññ‡7nÜx÷t9RaÒ“ 1³ì³è/í+‹8«^Ï’÷ýG—Œx>ýwcÄqIœ,KjDD+N"Lúhœ>6>ùä“_½ôÒK¿o6›¿H’d3ÜÐøàà Úívüdg'Î_8Ýn7>üè£xソÆ;wæzÝ^x!ÞxãñÛ×_æé²¦£ããøúëÝØÚÚŠK—.-2l¨´ýýý¸víÚª‡Qki¬ Ñëõ¢ÛíÆ7ß|ׯ__ñÈæóå—_ÆSO=Íf3666¾ßþÁ6³I’¤÷»Ýî÷÷÷ÿ}óæÍ¼õÖ[_Ä“³^º™G'Oœµ4){7ä¬qѦôË—Vý?j‘ñÃH’dþLF<×ÈÄTu˜Ôðò¤ôߣöо V'ž¬m8 3ÙãFͺÉ`XG“BÆp@ÉnÈ›]’4o„©äÞ0©U‡˜"îŠ4Ëù£bLú¥§wSJ—/‹0fİ®f™3az™GvÆÌ¸à2ËŠ8ÿL¬:Ä!Ϭ˜áãÓ/ºO~ù8ù‘]¦4À:É2²Ë‘ÒGoèùIû¼Ôr6LD9"Â,cÈ»WLöØQûÅdŸÏ—ìÞ0ãöŸÉ;&¨£¼3R†cLö¹á“gIRzþ,cZôØÂ•%",ºiï´eDÃ?õ|cÄsÓöˆÉ36¨ƒY–þŒ +ý1?wÞ¤×]dl+U–xPĬ˜I·³7#fÔ¹yâKã€2*rvɸ(3|î¨Ízǽάc˜÷Ø¥(S$(bæÉ¬1føßãö„)Óu€²:úŽY$ÂLzÏy[ªU £¨Y&ótƒßÁ„c€éf¹ õ´»&aJ£Ž!fÒ-­§ÍŽ~nÚ*Ô°Žf‰#“ny=-Œۜ·²ÊŠÜ{eÚ2£IK”òžL*£~¶h„©ÔÞ0©2†…³ˆ1Ùs§ÍŠYäý ŽÙ—%O´©e„‰(×Ò¤Ô¬qcÞeJ³¾oÑÑEÄ`•Šyî ”ç¸"#Lé”5cÒŸçyͼÇùL»ëÑ,ÇÍaJmÊæWžs&-Uõze½>PfyãK*Ϧ¼óD!fËŠ1ó–2_+XµyCIÞÙ2ó¼vé”=.,3˜5ã¥ì׊TDà˜eÆLm"LD97ëÍš7rä=/ûÅ*°,;ÆL:§ ×Êf8 œå¬–RÇ›ª„†³Œ1Eœ ën‘ RËQ­Ø°ê¨R¥kg­¨½cVùþKWµ¸°èx—ñy«v `Ë‹¾f%"LD5#‚Ù-P«žEsæª$ŠwU??TYQñ¤R&¢Ú!¢è±WùZ@ÙM*a"ª–5þª_(ƒeÅ’JF˜ˆú‡³øu¹V° gG*`RuŠ eø,e­ ¤ cXXÃA?¬«Z˜T£E?Ô]­Lªî±¢îŸꨖ&b½BÅ:}V¨šÚÆ—¬uŒëø™ ¬Ö"À¤Ö=J¬ûç€UX«ø’%D<æZÀò¬m|É&s}`v¢ËBÃb\?Ö‘Ð3û?ú˜òé7{©ÇIEND®B`‚flatseal-2.3.0/src/000077500000000000000000000000001467660615300141145ustar00rootroot00000000000000flatseal-2.3.0/src/application.js000066400000000000000000000073241467660615300167630ustar00rootroot00000000000000/* exported FlatsealApplication */ /* eslint class-methods-use-this: */ /* application.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk, Gio, Adw} = imports.gi; const {FlatsealWindow} = imports.widgets.window; const {showAboutDialog} = imports.widgets.aboutDialog; const {FlatsealDocsViewer} = imports.widgets.docsViewer; const {FlatsealShortcutsWindow} = imports.widgets.shortcutsWindow; var FlatsealApplication = GObject.registerClass({ GTypeName: 'FlatsealApplication', }, class FlatsealApplication extends Adw.Application { _init() { super._init({ application_id: 'com.github.tchx84.Flatseal', flags: Gio.ApplicationFlags.FLAGS_NONE, resource_base_path: '/com/github/tchx84/Flatseal/', }); this._window = null; } _displayHelp() { const launcher = new Gtk.UriLauncher(); launcher.uri = 'https://github.com/tchx84/flatseal'; launcher.launch(this._window, null, this._doDisplayHelp); } _doDisplayHelp(launcher, res) { try { launcher.launch_finish(res); } catch (err) { logError(err); } } _displayDocumentation() { const viewer = new FlatsealDocsViewer(this._window); viewer.present(); } _displayAbout() { showAboutDialog(this._window); } _displayShortcuts() { const dialog = new FlatsealShortcutsWindow({transient_for: this._window}); dialog.present(); } _quit() { this._window._shutdown(); this.quit(); } _setupActions() { const help_action = new Gio.SimpleAction({name: 'help', state: null}); help_action.connect('activate', this._displayHelp.bind(this)); const documentation_action = new Gio.SimpleAction({name: 'documentation', state: null}); documentation_action.connect('activate', this._displayDocumentation.bind(this)); const shortcuts_action = new Gio.SimpleAction({name: 'shortcuts', state: null}); shortcuts_action.connect('activate', this._displayShortcuts.bind(this)); const about_action = new Gio.SimpleAction({name: 'about', state: null}); about_action.connect('activate', this._displayAbout.bind(this)); const quit_action = new Gio.SimpleAction({name: 'quit', state: null}); quit_action.connect('activate', this._quit.bind(this)); this.add_action(help_action); this.add_action(documentation_action); this.add_action(shortcuts_action); this.add_action(about_action); this.add_action(quit_action); this.set_accels_for_action('app.documentation', ['F1']); this.set_accels_for_action('app.shortcuts', ['question']); this.set_accels_for_action('app.quit', ['q']); this.set_accels_for_action('window.close', ['w']); } vfunc_activate() { if (this._window === null) this._window = new FlatsealWindow(this); this._window.present(); } vfunc_startup() { super.vfunc_startup(); this._setupActions(); } }); flatseal-2.3.0/src/com.github.tchx84.Flatseal.data.gresource.xml000066400000000000000000000016131467660615300244560ustar00rootroot00000000000000 style.css widgets/aboutDialog.ui widgets/appInfoViewer.ui widgets/applicationRow.ui widgets/busNameRow.ui widgets/docsViewer.ui widgets/globalInfoViewer.ui widgets/globalRow.ui widgets/menu.ui widgets/overrideStatusIcon.ui widgets/pathRow.ui widgets/pathsViewer.ui widgets/permissionEntryRow.ui widgets/permissionPortalRow.ui widgets/permissionSwitchRow.ui widgets/relativePathRow.ui widgets/shortcutsWindow.ui widgets/variableRow.ui widgets/window.ui flatseal-2.3.0/src/com.github.tchx84.Flatseal.in000077500000000000000000000003041467660615300213560ustar00rootroot00000000000000#!@GJS@ imports.package.init({ name: "@PACKAGE_NAME@", version: "@PACKAGE_VERSION@", prefix: "@prefix@", libdir: "@libdir@", datadir: "@datadir@", }); imports.package.run(imports.main); flatseal-2.3.0/src/com.github.tchx84.Flatseal.src.gresource.xml000066400000000000000000000032001467660615300243260ustar00rootroot00000000000000 application.js main.js widgets/aboutDialog.js widgets/appInfoViewer.js widgets/applicationRow.js widgets/busNameRow.js widgets/detailsButton.js widgets/docsViewer.js widgets/globalInfoViewer.js widgets/globalRow.js widgets/overrideStatusIcon.js widgets/pathRow.js widgets/pathsViewer.js widgets/permissionEntryRow.js widgets/permissionPortalRow.js widgets/permissionSwitchRow.js widgets/relativePathRow.js widgets/resetButton.js widgets/shortcutsWindow.js widgets/variableRow.js widgets/window.js models/applications.js models/globalModel.js models/info.js models/overrideStatus.js models/unsupported.js models/persistent.js models/permissions.js models/devices.js models/features.js models/filesystems.js models/filesystemsOther.js models/portals.js models/sessionBus.js models/settings.js models/shared.js models/sockets.js models/systemBus.js models/variables.js flatseal-2.3.0/src/main.js000066400000000000000000000017621467660615300154040ustar00rootroot00000000000000/* exported main */ /* main.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ pkg.initGettext(); pkg.initFormat(); pkg.require({ Gio: '2.0', Gtk: '4.0', Adw: '1', WebKit: '6.0', }); const {FlatsealApplication} = imports.application; function main(argv) { const application = new FlatsealApplication(); return application.run(argv); } flatseal-2.3.0/src/meson.build000066400000000000000000000022571467660615300162640ustar00rootroot00000000000000pkgdatadir = join_paths(get_option('datadir'), meson.project_name()) gnome = import('gnome') dependency('appstream', version : '>= 1.0') dependency('libadwaita-1', version : '>= 1.5') dependency('webkitgtk-6.0', version : '>= 2.40') src_res = gnome.compile_resources('com.github.tchx84.Flatseal.src', 'com.github.tchx84.Flatseal.src.gresource.xml', gresource_bundle: true, install: true, install_dir: pkgdatadir, ) data_res = gnome.compile_resources('com.github.tchx84.Flatseal.data', 'com.github.tchx84.Flatseal.data.gresource.xml', gresource_bundle: true, install: true, install_dir: pkgdatadir, ) bin_conf = configuration_data() bin_conf.set('GJS', find_program('gjs').full_path()) bin_conf.set('PACKAGE_VERSION', meson.project_version()) bin_conf.set('PACKAGE_NAME', meson.project_name()) bin_conf.set('prefix', get_option('prefix')) bin_conf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) bin_conf.set('datadir', join_paths(get_option('prefix'), get_option('datadir'))) configure_file( input: 'com.github.tchx84.Flatseal.in', output: 'com.github.tchx84.Flatseal', configuration: bin_conf, install: true, install_dir: get_option('bindir') ) flatseal-2.3.0/src/models/000077500000000000000000000000001467660615300153775ustar00rootroot00000000000000flatseal-2.3.0/src/models/applications.js000066400000000000000000000300151467660615300204220ustar00rootroot00000000000000/* applications.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ /* exported FlatpakApplicationsModel getDefault */ const {GObject, GLib, Gio, AppStream} = imports.gi; const {info} = imports.models; const SIGNAL_DELAY = 2500; const TARGET_EVENTS = [ Gio.FileMonitorEvent.CHANGES_DONE_HINT, Gio.FileMonitorEvent.DELETED, ]; var FlatpakApplicationsModel = GObject.registerClass({ GTypeName: 'FlatpakApplicationsModel', Signals: { changed: {}, }, }, class FlatpakApplicationsModel extends GObject.Object { _init() { super._init({}); this._setup(); } _setup() { this._paths = null; this._info = info.getDefault(); this._monitors = []; this._changedDelayHandlerId = 0; this._getInstallationsPaths().forEach(path => { const file = Gio.File.new_for_path(GLib.build_filenamev([path, 'app'])); try { const monitor = file.monitor_directory(Gio.FileMonitorFlags.NONE, null); monitor.connect('changed', this._changedDelayed.bind(this)); this._monitors.push(monitor); } catch (err) { logError(err); } }); } _changedDelayed(monitor, file, other_file, event) { if (!TARGET_EVENTS.includes(event)) return; if (this._changedDelayHandlerId !== 0) GLib.Source.remove(this._changedDelayHandlerId); this._changedDelayHandlerId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, SIGNAL_DELAY, this._emitChanged.bind(this)); } _emitChanged() { this.emit('changed'); this._changedDelayHandlerId = 0; return GLib.SOURCE_REMOVE; } static _getSystemPath() { const systemPath = GLib.getenv('FLATPAK_SYSTEM_DIR'); if (systemPath) return systemPath; return GLib.build_filenamev([ GLib.DIR_SEPARATOR_S, 'var', 'lib', 'flatpak', ]); } _getUserPath() { const userPath = GLib.getenv('FLATPAK_USER_DIR'); if (userPath) return userPath; let userDataDir = GLib.get_user_data_dir(); if (this._info.getVersion() !== null) userDataDir = GLib.getenv('HOST_XDG_DATA_HOME'); if (!userDataDir) { userDataDir = GLib.build_filenamev([ GLib.get_home_dir(), '.local', 'share', ]); } return GLib.build_filenamev([userDataDir, 'flatpak']); } _getConfigPath() { let configPath = GLib.getenv('FLATPAK_CONFIG_DIR'); if (configPath) return configPath; configPath = GLib.build_filenamev([GLib.DIR_SEPARATOR_S, 'etc', 'flatpak']); if (this._info.getVersion() !== null) { configPath = GLib.build_filenamev([ GLib.DIR_SEPARATOR_S, 'run', 'host', 'etc', 'flatpak', ]); } return configPath; } static _parseCustomInstallation(path) { const installations = []; const keyFile = new GLib.KeyFile(); keyFile.load_from_file(path, GLib.KeyFileFlags.NONE); const [groups] = keyFile.get_groups(); groups.forEach(group => { const installation = {}; try { installation['path'] = keyFile.get_value(group, 'Path'); } catch (err) { return; } try { installation['priority'] = keyFile.get_value(group, 'Priority'); } catch (err) { installation['priority'] = 0; } installations.push(installation); }); return installations; } _getCustomInstallationsPaths() { let installations = []; const configPath = GLib.build_filenamev([ this._getConfigPath(), 'installations.d', ]); if (GLib.access(configPath, 0) !== 0) return installations; const directory = Gio.File.new_for_path(configPath); const enumerator = directory.enumerate_children('*', Gio.FileQueryInfoFlags.NONE, null); let fileInfo = enumerator.next_file(null); while (fileInfo !== null) { const file = enumerator.get_child(fileInfo); installations = [ ...installations, ...this.constructor._parseCustomInstallation(file.get_path()), ]; fileInfo = enumerator.next_file(null); } return installations .sort((a, b) => b.priority - a.priority) .map(e => e.path); } _getInstallationsPaths() { if (this._paths !== null) return this._paths; /* Installation priority is handled by this list order */ this._paths = this._getCustomInstallationsPaths(); this._paths.unshift(this._getUserPath()); this._paths.push(this.constructor._getSystemPath()); return this._paths; } _getBundlePathForAppId(appId) { return this._getInstallationsPaths() .map(p => GLib.build_filenamev([p, 'app', appId, 'current', 'active'])) .find(p => GLib.access(p, 0) === 0); } _getIconThemePathForAppId(appId) { return GLib.build_filenamev([ this._getBundlePathForAppId(appId), 'export', 'share', 'icons', ]); } /* XXX this only covers cases that follow the flathub convention */ static _isBaseApp(appId) { return appId.endsWith('.BaseApp'); } _getApplicationsForPath(path) { const list = []; if (GLib.access(path, 0) !== 0) return list; const directory = Gio.File.new_for_path(path); const enumerator = directory.enumerate_children('*', Gio.FileQueryInfoFlags.NONE, null); let fileInfo = enumerator.next_file(null); while (fileInfo !== null) { const file = enumerator.get_child(fileInfo); const appId = GLib.path_get_basename(file.get_path()); const activePath = GLib.build_filenamev([file.get_path(), 'current', 'active']); if (!this.constructor._isBaseApp(appId) && GLib.access(activePath, 0) === 0) list.push(appId); fileInfo = enumerator.next_file(null); } return list; } static _getApproximateNameForAppId(appId) { const name = appId.split('.').pop(); return name.replace(/^\w/, c => c.toUpperCase()); } getMetadataForAppId(appId) { const data = { runtime: _('Unknown'), }; const group = 'Application'; const path = this.getMetadataPathForAppId(appId); if (GLib.access(path, 0) !== 0) return data; const keyFile = new GLib.KeyFile(); keyFile.load_from_file(path, 0); try { data.runtime = keyFile.get_value(group, 'runtime'); } catch (err) { data.runtime = ''; } return data; } getDesktopForAppData(appdata) { const desktop = { icon: 'application-x-executable-symbolic', }; const path = GLib.build_filenamev([ this._getBundlePathForAppId(appdata.appId), 'export', 'share', 'applications', appdata.launchable, ]); const file = Gio.File.new_for_path(path); if (!file.query_exists(null)) return desktop; const metadata = new AppStream.Metadata(); try { metadata.parse_file(file, AppStream.FormatKind.DESKTOP_ENTRY); } catch (err) { return desktop; } const component = metadata.get_component(); const icon = component.get_icon_stock(); if (icon === null) return desktop; const iconName = icon.get_name(); if (iconName !== null) desktop.icon = iconName; return desktop; } getAppDataForAppId(appId) { const appdata = { appId: appId, name: this.constructor._getApproximateNameForAppId(appId), author: _('Unknown'), version: _('Unknown'), date: _('Unknown'), launchable: `${appId}.desktop`, }; const bundlePath = this._getBundlePathForAppId(appId); let path = GLib.build_filenamev([ bundlePath, 'files', 'share', 'appdata', `${appId}.appdata.xml`, ]); if (!GLib.file_test(path, GLib.FileTest.EXISTS)) { path = GLib.build_filenamev([ bundlePath, 'files', 'share', 'metainfo', `${appId}.metainfo.xml`, ]); if (!GLib.file_test(path, GLib.FileTest.EXISTS)) return appdata; } const file = Gio.File.new_for_path(path); const metadata = new AppStream.Metadata(); try { metadata.parse_file(file, AppStream.FormatKind.XML); } catch (err) { return appdata; } const component = metadata.get_component(); if (component.get_name()) appdata.name = component.get_name(); const developer = component.get_developer(); if (developer && developer.get_name()) appdata.author = developer.get_name(); const launchable = component.get_launchable(AppStream.LaunchableKind.DESKTOP_ID); if (launchable && launchable.get_entries()) [appdata.launchable] = launchable.get_entries(); const releaselist = component.get_releases_plain(); if (!releaselist) return appdata; const [release] = releaselist.get_entries(); if (!release) return appdata; if (release.get_version() !== null) appdata.version = `${release.get_version()}`; if (release.get_timestamp() !== null) { const ts = release.get_timestamp(); const date = new Date(ts * 1000); appdata.date = date.toISOString().substring(0, 10); } return appdata; } getAll() { const installations = this._getInstallationsPaths(); let applications = []; installations.forEach(path => { const app = GLib.build_filenamev([path, 'app']); applications = [...applications, ...this._getApplicationsForPath(app)]; }); const union = new Set(applications); const list = [...union]; list.sort(); return list.map(appId => { const appdata = this.getAppDataForAppId(appId); const desktop = this.getDesktopForAppData(appdata); return { appId: appId, appThemePath: this._getIconThemePathForAppId(appId), appName: appdata.name, appIconName: desktop.icon, }; }); } getMetadataPathForAppId(appId) { return GLib.build_filenamev([this._getBundlePathForAppId(appId), 'metadata']); } get userPath() { return this._getUserPath(); } shutdown() { if (this._changedDelayHandlerId !== 0) GLib.Source.remove(this._changedDelayHandlerId); this._changedDelayHandlerId = 0; this._monitors.forEach(monitor => { monitor.cancel(); }); this._monitors = []; } reload() { this.shutdown(); this._setup(); } }); var getDefault = (function() { let instance; return function() { if (typeof instance === 'undefined') instance = new FlatpakApplicationsModel(); return instance; }; }()); flatseal-2.3.0/src/models/devices.js000066400000000000000000000053621467660615300173650ustar00rootroot00000000000000/* exported FlatpakDevicesModel */ /* devices.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {FlatpakSharedModel} = imports.models.shared; var FlatpakDevicesModel = GObject.registerClass({ GTypeName: 'FlatpakDevicesModel', }, class FlatpakDevicesModel extends FlatpakSharedModel { _init() { super._init({}); } getPermissions() { return { 'devices-dri': { supported: this._info.supports('0.4.0'), description: _('GPU acceleration'), option: 'dri', value: this.constructor.getDefault(), example: 'device=dri', }, 'devices-input': { supported: this._info.supports('1.15.6'), description: _('Input devices'), option: 'input', value: this.constructor.getDefault(), example: 'device=input', }, 'devices-kvm': { supported: this._info.supports('0.6.12'), description: _('Virtualization'), option: 'kvm', value: this.constructor.getDefault(), example: 'device=kvm', }, 'devices-shm': { supported: this._info.supports('1.6.1'), description: _('Shared memory'), option: 'shm', value: this.constructor.getDefault(), example: 'device=shm', }, 'devices-all': { supported: this._info.supports('0.6.6'), description: _('All devices (e.g. webcam)'), option: 'all', value: this.constructor.getDefault(), example: 'device=all', }, }; } static getGroup() { return 'Context'; } static getKey() { return 'devices'; } static getStyle() { return 'devices'; } static getTitle() { return 'Device'; } static getDescription() { return _('List of devices available in the sandbox'); } }); flatseal-2.3.0/src/models/features.js000066400000000000000000000055771467660615300175710ustar00rootroot00000000000000/* exported FlatpakFeaturesModel */ /* features.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {FlatpakSharedModel} = imports.models.shared; var FlatpakFeaturesModel = GObject.registerClass({ GTypeName: 'FlatpakFeaturesModel', }, class FlatpakFeaturesModel extends FlatpakSharedModel { _init() { super._init({}); } getPermissions() { return { 'features-devel': { supported: this._info.supports('0.6.10'), description: _('Development syscalls (e.g. ptrace)'), option: 'devel', value: this.constructor.getDefault(), example: 'allow=devel', }, 'features-multiarch': { supported: this._info.supports('0.6.12'), description: _('Programs from other architectures'), option: 'multiarch', value: this.constructor.getDefault(), example: 'allow=multiarch', }, 'features-bluetooth': { supported: this._info.supports('0.11.8'), description: _('Bluetooth'), option: 'bluetooth', value: this.constructor.getDefault(), example: 'allow=bluetooth', }, 'features-canbus': { supported: this._info.supports('1.0.3'), description: _('Controller Area Network bus'), option: 'canbus', value: this.constructor.getDefault(), example: 'allow=canbus', }, 'features-per-app-dev-shm': { supported: this._info.supports('1.11.1'), description: _('Application Shared Memory'), option: 'per-app-dev-shm', value: this.constructor.getDefault(), example: 'allow=per-app-dev-shm', }, }; } static getGroup() { return 'Context'; } static getKey() { return 'features'; } static getStyle() { return 'features'; } static getTitle() { return 'Allow'; } static getDescription() { return _('List of features available to the application'); } }); flatseal-2.3.0/src/models/filesystems.js000066400000000000000000000057751467660615300203220ustar00rootroot00000000000000/* exported FlatpakFilesystemsModel getDefault */ /* filesystems.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {FlatpakSharedModel} = imports.models.shared; var FlatpakFilesystemsModel = GObject.registerClass({ GTypeName: 'FlatpakFilesystemsModel', }, class FlatpakFilesystemsModel extends FlatpakSharedModel { _init() { super._init({}); } getPermissions() { return { 'filesystems-host': { supported: this._info.supports('0.4.0'), description: _('All system files'), option: 'host', value: this.constructor.getDefault(), example: 'filesystem=host', }, 'filesystems-host-os': { supported: this._info.supports('1.7.1'), description: _('All system libraries, executables and static data'), option: 'host-os', value: this.constructor.getDefault(), example: 'filesystem=host-os', }, 'filesystems-host-etc': { supported: this._info.supports('1.7.1'), description: _('All system configurations'), option: 'host-etc', value: this.constructor.getDefault(), example: 'filesystem=host-etc', }, 'filesystems-home': { supported: this._info.supports('0.4.0'), description: _('All user files'), option: 'home', value: this.constructor.getDefault(), example: 'filesystem=home', }, }; } static getGroup() { return 'Context'; } static getKey() { return 'filesystems'; } static getStyle() { return 'filesystems'; } static getTitle() { return 'Filesystem'; } static getDescription() { return _('List of filesystem subsets available to the application'); } get overrides() { return this._overrides; } get globals() { return this._globals; } get originals() { return this._originals; } }); var getDefault = (function() { let instance; return function() { if (typeof instance === 'undefined') instance = new FlatpakFilesystemsModel(); return instance; }; }()); flatseal-2.3.0/src/models/filesystemsOther.js000066400000000000000000000157621467660615300213210ustar00rootroot00000000000000/* exported FlatpakFilesystemsOtherModel */ /* filesystemsOther.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {filesystems} = imports.models; const {FlatpakSharedModel} = imports.models.shared; var FlatpakFilesystemsOtherModel = GObject.registerClass({ GTypeName: 'FlatpakFilesystemsOtherModel', }, class FlatpakFilesystemsOtherModel extends FlatpakSharedModel { _init() { super._init({}); this._filesystems = filesystems.getDefault(); } getPermissions() { return { 'filesystems-other': { supported: this._info.supports('0.6.14'), description: _('Other files'), option: null, value: this.constructor.getDefault(), example: _('e.g. ~/games:ro, xdg-pictures, etc'), }, }; } static getGroup() { return 'Context'; } static getKey() { return 'filesystems'; } static getStyle() { return 'filesystems'; } static getTitle() { return 'Filesystem'; } static getDescription() { return _('List of filesystem subsets available to the application'); } static getType() { return 'path'; } static getDefault() { return ''; } getOptions() { // eslint-disable-line class-methods-use-this return null; } static isNegated(value) { return value.startsWith('!'); } static negate(value) { if (this.isNegated(value)) return value.replace('!', ''); return `!${value}`; } static isOverriden(set, value) { let [path] = value.split(':'); path = path.replace('!', ''); return ( set.has(path) || set.has(`${path}:ro`) || set.has(`${path}:rw`) || set.has(`${path}:create`) || set.has(`!${path}`) || set.has(`!${path}:ro`) || set.has(`!${path}:rw`) || set.has(`!${path}:create`) || set.has(`!${path}:reset`)); } static isStrictlyOverriden(set, value) { return set.has(this.negate(value)); } static isResetOverride(value) { const [path, mode] = value.split(':'); return path.startsWith('!') && mode === 'reset'; } static removeMode(value) { const [path] = value.split(':'); return path; } updateFromProxyProperty(property, value) { const paths = new Set(this.constructor.deserialize(value)); const added = new Set([...paths] .filter(p => p.length !== 0) .filter(p => !this._filesystems.originals.has(p)) .filter(p => !this._originals.has(p)) .filter(p => !this._globals.has(p))); const removedOriginals = [...this._originals] .filter(p => !this.constructor.isOverriden(this._filesystems.overrides, p)) .filter(p => !this.constructor.isOverriden(this._globals, p)) .filter(p => !this.constructor.isOverriden(added, p)) .filter(p => !paths.has(p)) .map(p => this.constructor.removeMode(p)) .map(p => this.constructor.negate(p)); const removedGlobals = [...this._globals] .filter(p => !this.constructor.isOverriden(this._filesystems.originals, p)) .filter(p => !this.constructor.isOverriden(this._filesystems.overrides, p)) .filter(p => !this.constructor.isOverriden(this._originals, p)) .filter(p => !this.constructor.isOverriden(added, p)) .filter(p => !paths.has(p)) .map(p => this.constructor.removeMode(p)) .map(p => this.constructor.negate(p)); this._overrides = new Set([...added, ...removedOriginals, ...removedGlobals]); } updateStatusProperty(proxy) { const values = proxy.filesystems_other .split(';') .filter(p => p.length !== 0) .map(p => this._getStatusForPermission(p)); proxy.set_property('filesystems-other-status', values.join(';')); } updateProxyProperty(proxy) { const originals = [...this._originals] .filter(p => !this.constructor.isOverriden(this._filesystems.globals, p)) .filter(p => !this.constructor.isOverriden(this._filesystems.overrides, p)) .filter(p => !this.constructor.isOverriden(this._globals, p)) .filter(p => !this.constructor.isOverriden(this._overrides, p)); const globals = [...this._globals] .filter(p => !this.constructor.isStrictlyOverriden(this._originals, p)) .filter(p => !this.constructor.isOverriden(this._filesystems.overrides, p)) .filter(p => !this.constructor.isOverriden(this._overrides, p)) .filter(p => !(this.constructor.isOverriden(this._filesystems.originals, p) && this.constructor.isNegated(p) && !this.constructor.isResetOverride(p))) .filter(p => !(this.constructor.isOverriden(this._originals, p) && this.constructor.isNegated(p) && !this.constructor.isResetOverride(p))); const overrides = [...this._overrides] .filter(p => !this.constructor.isStrictlyOverriden(this._originals, p)) .filter(p => !this.constructor.isStrictlyOverriden(this._globals, p)) .filter(p => !(this.constructor.isOverriden(this._filesystems.originals, p) && this.constructor.isNegated(p) && !this.constructor.isResetOverride(p))) .filter(p => !(this.constructor.isOverriden(this._originals, p) && this.constructor.isNegated(p) && !this.constructor.isResetOverride(p))) .filter(p => !(this.constructor.isOverriden(this._globals, p) && this.constructor.isNegated(p) && !this.constructor.isResetOverride(p))); const paths = new Set([...originals, ...globals, ...overrides]); const value = this.constructor.serialize([...paths]); proxy.set_property('filesystems-other', value); } loadFromKeyFile(group, key, value, overrides, global) { if (value.length === 0) return; const set = this._findProperSet(overrides, global); set.add(value); } }); flatseal-2.3.0/src/models/globalModel.js000066400000000000000000000014571467660615300201650ustar00rootroot00000000000000/* exported isGlobalOverride */ /* globalModel.js * * Copyright 2022 Martin Abente Lahaye * * 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 . */ function isGlobalOverride(appId) { return appId === 'global'; } flatseal-2.3.0/src/models/info.js000066400000000000000000000050511467660615300166710ustar00rootroot00000000000000/* exported FlatpakInfoModel getDefault */ /* info.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, GLib} = imports.gi; var FlatpakInfoModel = GObject.registerClass({ GTypeName: 'FlatpakInfoModel', }, class FlatpakInfoModel extends GObject.Object { _init() { super._init({}); this._version = null; } static _getInfoPath() { const path = GLib.getenv('FLATPAK_INFO_PATH'); if (path) return path; return GLib.build_filenamev([ GLib.DIR_SEPARATOR_S, '.flatpak-info', ]); } _parseVersion() { const keyFile = new GLib.KeyFile(); try { keyFile.load_from_file(this.constructor._getInfoPath(), GLib.KeyFileFlags.NONE); return keyFile.get_value('Instance', 'flatpak-version'); } catch (err) { return null; } } getVersion() { if (this._version === null) this._version = this._parseVersion(); return this._version; } supports(target) { const version = this.getVersion(); if (version === null) return true; const versions = version.split('.'); const targets = target.split('.'); const components = Math.max(versions.length, targets.length); for (let index = 0; index < components; index++) { const _version = parseInt(versions[index] || 0, 10); const _target = parseInt(targets[index] || 0, 10); if (_version < _target) return false; if (_version > _target) return true; } return true; } reload() { this._version = this._parseVersion(); } }); var getDefault = (function() { let instance; return function() { if (typeof instance === 'undefined') instance = new FlatpakInfoModel(); return instance; }; }()); flatseal-2.3.0/src/models/overrideStatus.js000066400000000000000000000015301467660615300207570ustar00rootroot00000000000000/* exported FlatsealOverrideStatus */ /* overrideStatus.js * * Copyright 2022 Martin Abente Lahaye * * 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 . */ var FlatsealOverrideStatus = { ORIGINAL: 'original', GLOBAL: 'global', USER: 'user', }; flatseal-2.3.0/src/models/permissions.js000066400000000000000000000341051467660615300203130ustar00rootroot00000000000000/* exported FlatpakPermissionsModel getDefault */ /* permissions.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {Gio, GObject, GLib} = imports.gi; const {FlatpakUnsupportedModel} = imports.models.unsupported; const {FlatpakDevicesModel} = imports.models.devices; const {FlatpakSharedModel} = imports.models.shared; const {FlatpakSocketsModel} = imports.models.sockets; const {FlatpakFeaturesModel} = imports.models.features; const {FlatpakFilesystemsOtherModel} = imports.models.filesystemsOther; const {FlatpakVariablesModel} = imports.models.variables; const {FlatpakSessionBusModel} = imports.models.sessionBus; const {FlatpakSystemBusModel} = imports.models.systemBus; const {FlatsealOverrideStatus} = imports.models.overrideStatus; const {isGlobalOverride} = imports.models.globalModel; const {applications, filesystems, persistent, portals} = imports.models; const FLAGS = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; const MODELS = { shared: new FlatpakSharedModel(), sockets: new FlatpakSocketsModel(), devices: new FlatpakDevicesModel(), features: new FlatpakFeaturesModel(), filesystems: filesystems.getDefault(), filesystemsOther: new FlatpakFilesystemsOtherModel(), persistent: persistent.getDefault(), variables: new FlatpakVariablesModel(), system: new FlatpakSystemBusModel(), session: new FlatpakSessionBusModel(), portals: portals.getDefault(), unsupported: new FlatpakUnsupportedModel(), }; function generate_index() { const index = {}; Object.values(MODELS).forEach(model => { const group = model.constructor.getGroup(); const key = model.constructor.getKey(); const options = model.getOptions(); if (key === null) { index[`${group}`] = model; } else if (options === null) { index[`${group}_${key}`] = model; } else { options.forEach(option => { index[`${group}_${key}_${option}`] = model; }); } }); return index; } const INDEX = generate_index(); function generate() { const properties = {}; Object.values(MODELS).forEach(model => { Object.entries(model.getPermissions()).forEach(([property]) => { const value = model.constructor.getDefault(); if (typeof value === 'boolean') { properties[property] = GObject.ParamSpec.boolean( property, property, property, FLAGS, value); } else if (typeof value === 'string') { properties[property] = GObject.ParamSpec.string( property, property, property, FLAGS, value); } else if (typeof value === 'number') { const max = model.constructor.getMax(); const min = model.constructor.getMin(); properties[property] = GObject.ParamSpec.int( property, property, property, FLAGS, min, max, value); } else { logError(`No support for ${property}:${typeof value}`); } /* overrides status */ const statusProperty = `${property}-status`; properties[statusProperty] = GObject.ParamSpec.string( statusProperty, statusProperty, statusProperty, FLAGS, FlatsealOverrideStatus.ORIGINAL); }); }); return properties; } var DELAY = 500; var FlatpakPermissionsModel = GObject.registerClass({ GTypeName: 'FlatpakPermissionsModel', Properties: generate(), Signals: { changed: { param_types: [GObject.TYPE_BOOLEAN, GObject.TYPE_BOOLEAN], }, reset: {}, failed: {}, }, }, class FlatpakPermissionsModel extends GObject.Object { _init() { super._init({}); this._appId = ''; this._delayedHandlerId = 0; this._monitors = []; this._monitorsDelayedHandlerId = 0; this._changedbyUser = false; this._applications = applications.getDefault(); this._notifyHandlerId = this.connect('notify', this._delayedUpdate.bind(this)); this._ensureBaseOverridesPath(); } _ensureBaseOverridesPath() { const path = this._getBaseOverridesPath(); if (GLib.access(path, 0) !== 0) GLib.mkdir_with_parents(path, 0o0755); } _getBaseOverridesPath() { return GLib.build_filenamev([this._applications.userPath, 'overrides']); } _getMetadataPath() { return this._applications.getMetadataPathForAppId(this._appId); } _getGlobalOverridesPath() { return GLib.build_filenamev([this._getBaseOverridesPath(), 'global']); } _getOverridesPath() { return GLib.build_filenamev([this._getBaseOverridesPath(), this._appId]); } _loadPermissionsForPath(path, overrides, global) { if (GLib.access(path, 0) !== 0) return; const keyFile = new GLib.KeyFile(); try { keyFile.load_from_file(path, 0); } catch (err) { logError(err, `Could not load ${path}`); this.emit('failed'); return; } const [groups] = keyFile.get_groups(); groups.forEach(group => { const [keys] = keyFile.get_keys(group); keys.forEach(key => { const value = keyFile.get_value(group, key); /* First for models that process the value as a whole */ let model = this.constructor._find(`${group}`); if (model !== null) { model.loadFromKeyFile(group, key, value, overrides, global); return; } /* Then check models that process the value as individually */ const values = value .replace(/;+$/, '') .split(';'); values.forEach(option => { model = this.constructor._find(`${group}_${key}_${option.replace('!', '')}`); if (model === null) model = this.constructor._find(`${group}_${key}`); if (model === null && overrides && !global) model = MODELS.unsupported; if (model !== null) model.loadFromKeyFile(group, key, option, overrides, global); }); }); }); } _loadPermissions() { if (isGlobalOverride(this._appId)) return; this._loadPermissionsForPath(this._getMetadataPath(), false, false); } _loadGlobalOverrides() { if (isGlobalOverride(this._appId)) return; this._loadPermissionsForPath( this._getGlobalOverridesPath(), true, true); } _loadOverrides() { this._loadPermissionsForPath( this._getOverridesPath(), true, false); } _checkIfChanged() { const overrideExists = GLib.access(this._getOverridesPath(), 0) === 0; const portalsChanged = MODELS.portals.changed(); const changed = overrideExists || portalsChanged; const unsupported = !MODELS.unsupported.isEmpty(); this.emit('changed', changed, unsupported); } _saveOverrides() { const keyFile = new GLib.KeyFile(); Object.values(MODELS).forEach(model => model.saveToKeyFile(keyFile)); const [, length] = keyFile.to_data(); const path = this._getOverridesPath(); if (length === 0) GLib.unlink(path); else keyFile.save_to_file(path); this._checkIfChanged(); } _updateProperties() { GObject.signal_handler_block(this, this._notifyHandlerId); Object.values(MODELS).forEach(model => model.updateProxyProperty(this)); this._checkIfChanged(); GObject.signal_handler_unblock(this, this._notifyHandlerId); } _updateStatusProperties() { GObject.signal_handler_block(this, this._notifyHandlerId); Object.values(MODELS).forEach(model => model.updateStatusProperty(this)); GObject.signal_handler_unblock(this, this._notifyHandlerId); } _delayedUpdate() { if (this._delayedHandlerId !== 0) GLib.Source.remove(this._delayedHandlerId); this._delayedHandlerId = GLib.timeout_add( GLib.PRIORITY_HIGH, DELAY, this._updateModels.bind(this)); } _processPendingUpdates() { if (this._appId === '') return; if (this._delayedHandlerId === 0) return; GLib.Source.remove(this._delayedHandlerId); this._updateModels(); } _updateModels() { Object.values(MODELS).forEach(model => { Object.entries(model.getPermissions()).forEach(([property]) => { model.updateFromProxyProperty( property, this[property.replace(/-/g, '_')]); }); }); this._changedbyUser = true; this._saveOverrides(); this._updateStatusProperties(); this._delayedHandlerId = 0; return GLib.SOURCE_REMOVE; } _setup() { if (this._appId === '') return; Object.values(MODELS).forEach(model => model.reset()); this._loadPermissions(); this._loadGlobalOverrides(); this._loadOverrides(); this._updateProperties(); this._updateStatusProperties(); } _setupMonitors() { if (this._appId === '') return; let paths = [this._getGlobalOverridesPath()]; if (!isGlobalOverride(this._appId)) paths = [...paths, this._getMetadataPath(), this._getOverridesPath()]; paths.forEach(path => { const file = Gio.File.new_for_path(path); try { const monitor = file.monitor_file(Gio.FileMonitorFlags.WATCH_MOVES, null); monitor.connect('changed', this._delayMonitorsChanged.bind(this)); this._monitors.push(monitor); } catch (err) { logError(err); } }); } _cancelMonitors() { if (this._monitorsDelayedHandlerId !== 0) GLib.Source.remove(this._monitorsDelayedHandlerId); this._monitors.forEach(monitor => { monitor.cancel(); }); this._monitors = []; this._monitorsDelayedHandlerId = 0; this._changedbyUser = false; } _delayMonitorsChanged() { if (this._monitorsDelayedHandlerId !== 0) GLib.Source.remove(this._monitorsDelayedHandlerId); this._monitorsDelayedHandlerId = GLib.timeout_add( GLib.PRIORITY_DEFAULT, DELAY, this._updateFromMonitors.bind(this)); } _updateFromMonitors() { if (!this._changedbyUser) this._setup(); this._changedbyUser = false; this._monitorsDelayedHandlerId = 0; return GLib.SOURCE_REMOVE; } getAll() { const list = []; Object.values(MODELS).forEach(model => { Object.entries(model.getPermissions()).forEach(([property, permission]) => { const entry = {}; entry['property'] = property; entry['description'] = permission.description; entry['value'] = this[property.replace(/-/g, '_')]; entry['type'] = model.constructor.getType(); entry['permission'] = permission.example; entry['supported'] = permission.supported; entry['portalTable'] = permission.table; entry['portalId'] = permission.id; entry['groupTitle'] = model.constructor.getTitle(); entry['groupStyle'] = model.constructor.getStyle(); entry['groupDescription'] = model.constructor.getDescription(); entry['statusProperty'] = `${property}-status`; entry['serializeFunc'] = model.constructor.serialize; entry['deserializeFunc'] = model.constructor.deserialize; list.push(entry); }); }); return list; } undo() { this._changedbyUser = true; const path = this._getOverridesPath(); this._backup.save_to_file(path); MODELS.portals.restore(); this._setup(); } backup() { this._backup = new GLib.KeyFile(); Object.values(MODELS).forEach(model => model.saveToKeyFile(this._backup)); MODELS.portals.backup(); } reset() { this._changedbyUser = true; this.backup(); const path = this._getOverridesPath(); GLib.unlink(path); MODELS.portals.forget(); this._setup(); this.emit('reset'); } shutdown() { this._processPendingUpdates(); this._cancelMonitors(); } reload() { this.shutdown(); this._setup(); this._setupMonitors(); } set appId(appId) { this._backup = null; this.shutdown(); this._appId = appId; MODELS.portals.appId = appId; this._setup(); this._setupMonitors(); } get appId() { return this._appId; } static _find(key) { return Object.hasOwn(INDEX, key) ? INDEX[key] : null; } /* testing */ static getGroupForProperty(property) { const [group] = property.split('-'); return MODELS[group].constructor.getGroup(); } }); var getDefault = (function() { let instance; return function() { if (typeof instance === 'undefined') instance = new FlatpakPermissionsModel(); return instance; }; }()); flatseal-2.3.0/src/models/persistent.js000066400000000000000000000064141467660615300201420ustar00rootroot00000000000000/* exported FlatpakPersistentModel getDefault */ /* persistent.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {FlatpakSharedModel} = imports.models.shared; var FlatpakPersistentModel = GObject.registerClass({ GTypeName: 'FlatpakPersistentModel', }, class FlatpakPersistentModel extends FlatpakSharedModel { _init() { super._init({}); } getPermissions() { return { persistent: { supported: this._info.supports('0.4.0'), description: _('Files'), option: null, value: this.constructor.getDefault(), example: _('e.g. .thunderbird'), }, }; } static getGroup() { return 'Context'; } static getKey() { return 'persistent'; } static getStyle() { return 'persistent'; } static getTitle() { return 'Persistent'; } static getDescription() { return _('List of homedir-relative paths created in the sandbox'); } static getType() { return 'relativePath'; } static getDefault() { return ''; } getOptions() { // eslint-disable-line class-methods-use-this return null; } updateFromProxyProperty(property, value) { const originals = new Set([...this._originals, ...this._globals]); const overrides = new Set(this.constructor.deserialize(value) .filter(p => p.length !== 0) .filter(p => !originals.has(p))); this._overrides = overrides; } updateStatusProperty(proxy) { const values = proxy.persistent .split(';') .filter(p => p.length !== 0) .map(p => this._getStatusForPermission(p)); proxy.set_property('persistent-status', this.constructor.serialize(values)); } updateProxyProperty(proxy) { const paths = new Set([...this._originals, ...this._globals, ...this._overrides]); const persistent = [...paths].join(';'); proxy.set_property('persistent', persistent); } loadFromKeyFile(group, key, value, overrides, global) { if (value.length === 0) return; const set = this._findProperSet(overrides, global); set.add(value); } isOriginal(value) { const originals = new Set([...this._originals, ...this._globals]); return originals.has(value); } }); var getDefault = (function() { let instance; return function() { if (typeof instance === 'undefined') instance = new FlatpakPersistentModel(); return instance; }; }()); flatseal-2.3.0/src/models/portals.js000066400000000000000000000317701467660615300174310ustar00rootroot00000000000000/* exported FlatpakPortalsModel getDefault */ /* eslint class-methods-use-this: */ /* portals.js * * Copyright 2020-2021 Martin Abente Lahaye * * 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 . */ const {Gio, GLib, GObject} = imports.gi; const {info} = imports.models; var PermissionsIface = ` `; const SUPPORTED_SERVICE_VERSION = 2; const SUPPORTED_FLATPAK_VERSION = '0.4.0'; var FlatpakPortalState = { UNKNOWN: 0, UNSUPPORTED: 1, UNSET: 2, DISALLOWED: 3, ALLOWED: 4, }; var FlatpakPortalsModel = GObject.registerClass({ GTypeName: 'FlatpakPortalsModel', }, class FlatpakPortalsModel extends GObject.Object { _init() { super._init({}); this._backup = {}; this._proxy = null; this._backgroundbackgroundSupported = null; this._notificationsnotificationSupported = null; this._devicesmicrophoneSupported = null; this._devicesspeakersSupported = null; this._devicescameraSupported = null; this._locationlocationSupported = null; this._backgroundbackgroundReason = ''; this._notificationsnotificationReason = ''; this._devicesmicrophoneReason = ''; this._devicesspeakersReason = ''; this._devicescameraReason = ''; this._locationlocationReason = ''; this._info = info.getDefault(); this._appId = ''; } _setup() { if (this._proxy !== null) return; let busName = GLib.getenv('FLATSEAL_PORTAL_BUS_NAME'); if (busName === null) busName = 'org.freedesktop.impl.portal.PermissionStore'; const PermissionsProxy = Gio.DBusProxy.makeProxyWrapper(PermissionsIface); try { this._proxy = new PermissionsProxy( Gio.DBus.session, busName, '/org/freedesktop/impl/portal/PermissionStore'); } catch (err) { logError(err); } } getPermissions() { return { 'portals-background': { supported: this.isSupported('background', 'background'), description: _('Background'), value: this.constructor.getDefault(), example: _('Can run in the background'), table: 'background', id: 'background', allowed: ['yes'], disallowed: ['no'], }, 'portals-notification': { supported: this.isSupported('notifications', 'notification'), description: _('Notifications'), value: this.constructor.getDefault(), example: _('Can send notifications'), table: 'notifications', id: 'notification', allowed: ['yes'], disallowed: ['no'], }, 'portals-microphone': { supported: this.isSupported('devices', 'microphone'), description: _('Microphone'), value: this.constructor.getDefault(), example: _('Can listen to your microphone'), table: 'devices', id: 'microphone', allowed: ['yes'], disallowed: ['no'], }, 'portals-speakers': { supported: this.isSupported('devices', 'speakers'), description: _('Speakers'), value: this.constructor.getDefault(), example: _('Can play sounds to your speakers'), table: 'devices', id: 'speakers', allowed: ['yes'], disallowed: ['no'], }, 'portals-camera': { supported: this.isSupported('devices', 'camera'), description: _('Camera'), value: this.constructor.getDefault(), example: _('Can record videos with your camera'), table: 'devices', id: 'camera', allowed: ['yes'], disallowed: ['no'], }, 'portals-location': { supported: this.isSupported('location', 'location'), description: _('Location'), value: this.constructor.getDefault(), example: _('Can access your location'), table: 'location', id: 'location', allowed: ['EXACT', '0'], disallowed: ['NONE', '0'], }, }; } static getType() { return 'portal'; } static getDefault() { return FlatpakPortalState.UNKNOWN; } static getMax() { return FlatpakPortalState.ALLOWED; } static getMin() { return FlatpakPortalState.UNKNOWN; } static getStyle() { return 'portals'; } static getGroup() { return 'portals'; } static getKey() { return null; } getOptions() { // eslint-disable-line class-methods-use-this return null; } static getTitle() { return 'Portals'; } static getDescription() { return _('List of resources selectively granted to the application'); } safeList(table) { try { return this._proxy.ListSync(table); } catch (err) { return [[]]; } } safeLookUp(table, id) { try { return this._proxy.LookupSync(table, id); } catch (err) { return [null]; } } safeSetPermission(table, id, appId, access) { try { this._proxy.SetPermissionSync(table, false, id, appId, access); } catch (err) { logError(err); } } safeDeletePermission(table, id, appId) { try { this._proxy.DeletePermissionSync(table, id, appId); } catch (err) { logError(err); } } isSupported(table, id) { if (this[`_${table}${id}Supported`] !== null) return this[`_${table}${id}Supported`]; if (this._info.supports(SUPPORTED_FLATPAK_VERSION) === false) { this[`_${table}${id}Reason`] = _('Not supported by the installed version of Flatpak'); this[`_${table}${id}Supported`] = false; return false; } this._setup(); if (this._proxy === null || this._proxy.version >= SUPPORTED_SERVICE_VERSION === false) { this[`_${table}${id}Reason`] = _('Requires permission store version 2 or newer'); this[`_${table}${id}Supported`] = false; return false; } const [appIds] = this.safeLookUp(table, id); if (appIds === null) { this[`_${table}${id}Reason`] = _('Portal data has not been set up yet'); this[`_${table}${id}Supported`] = false; return false; } this[`_${table}${id}Reason`] = ''; this[`_${table}${id}Supported`] = true; return true; } getUnsupportedReason(table, id) { return this[`_${table}${id}Reason`]; } updateFromProxyProperty(property, value) { const permission = this.getPermissions()[property]; if (!this.isSupported(permission.table, permission.id)) return; if (value === FlatpakPortalState.UNSET) { this.unset(permission.table, permission.id); } else if (value === FlatpakPortalState.ALLOWED) { this.safeSetPermission(permission.table, permission.id, this.appId, permission.allowed); } else if (value === FlatpakPortalState.DISALLOWED) { this.safeSetPermission(permission.table, permission.id, this.appId, permission.disallowed); } else { /* unsupported */ } } updateStatusProperty() { /* does not apply to this backend */ } updateProxyProperty(proxy) { Object.entries(this.getPermissions()).forEach(([property, permission]) => { if (!this.isSupported(permission.table, permission.id)) { proxy.set_property(property, FlatpakPortalState.UNSUPPORTED); return; } const [appIds] = this.safeLookUp(permission.table, permission.id); if (appIds === null) proxy.set_property(property, FlatpakPortalState.UNSUPPORTED); else if (!(this.appId in appIds)) proxy.set_property(property, FlatpakPortalState.UNSET); else if (appIds[this.appId][0] === permission.allowed[0]) proxy.set_property(property, FlatpakPortalState.ALLOWED); else proxy.set_property(property, FlatpakPortalState.DISALLOWED); }); } backup() { this._backup = {}; for (const [property, permission] of Object.entries(this.getPermissions())) { if (!this.isSupported(permission.table, permission.id)) continue; const [appIds] = this.safeLookUp(permission.table, permission.id); if (appIds === null || !(this.appId in appIds)) continue; this._backup[property] = appIds[this.appId]; } } restore() { for (const [property, permission] of Object.entries(this.getPermissions())) { if (!(property in this._backup)) continue; this.safeSetPermission(permission.table, permission.id, this.appId, this._backup[property]); } } unset(table, id) { const [appIds] = this.safeLookUp(table, id); if (appIds === null || !(this.appId in appIds)) return; /* https://github.com/flatpak/xdg-desktop-portal/issues/573 */ if (Object.keys(appIds).length === 1) this.safeSetPermission(table, id, '', []); this.safeDeletePermission(table, id, this.appId); } forget() { for (const [, permission] of Object.entries(this.getPermissions())) { if (!this.isSupported(permission.table, permission.id)) continue; this.unset(permission.table, permission.id); } } changed() { for (const [, permission] of Object.entries(this.getPermissions())) { if (!this.isSupported(permission.table, permission.id)) continue; const [appIds] = this.safeLookUp(permission.table, permission.id); if (appIds !== null && this.appId in appIds) return true; } return false; } saveToKeyFile() { /* this backend has no file */ } reset() { /* this backends speaks directly to DBus */ } reload() { const permissions = this.getPermissions(); Object.keys(permissions).forEach(property => { const permission = permissions[property]; this[`_${permission.table}${permission.id}Supported`] = null; this.isSupported(permission.table, permission.id); }); } getVersion() { if (this._proxy === null) return null; return this._proxy.version; } set appId(appId) { this._appId = appId; } get appId() { return this._appId; } }); var getDefault = (function() { let instance; return function() { if (typeof instance === 'undefined') instance = new FlatpakPortalsModel(); return instance; }; }()); flatseal-2.3.0/src/models/sessionBus.js000066400000000000000000000132471467660615300201010ustar00rootroot00000000000000/* exported FlatpakSessionBusModel */ /* sessionBus.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {FlatpakSharedModel} = imports.models.shared; const {FlatsealOverrideStatus} = imports.models.overrideStatus; var FlatpakSessionBusModel = GObject.registerClass({ GTypeName: 'FlatpakSessionBusModel', }, class FlatpakSessionBusModel extends FlatpakSharedModel { _init() { super._init({}); } getPermissions() { return { 'session-talk': { supported: this._info.supports('0.4.0'), description: _('Talks'), option: 'talk', value: this.constructor.getDefault(), example: 'e.g. org.freedesktop.Notifications', }, 'session-own': { supported: this._info.supports('0.4.0'), description: _('Owns'), option: 'own', value: this.constructor.getDefault(), example: 'e.g. org.gnome.Contacts.SearchProvider', }, }; } static getDefault() { return ''; } static getType() { return 'bus'; } static getGroup() { return 'Session Bus Policy'; } static getKey() { return null; } static getPrefix() { return 'session'; } static getStyle() { return 'session'; } static getTitle() { return 'Session Bus'; } static getDescription() { return _('List of well-known names on the session bus'); } getOptions() { // eslint-disable-line class-methods-use-this return null; } updateFromProxyProperty(property, value) { const prefix = this.constructor.getPrefix(); const option = property.replace(`${prefix}-`, ''); const originals = {...this._originals, ...this._globals}; const values = this.constructor.deserialize(value); /* Reset overrides on Talk since it's the first to update */ const overrides = option === 'talk' ? {} : this._overrides; const missing = option === 'talk' ? {} : this._missing; values .filter(n => n.length !== 0) .filter(n => !(n in originals) || originals[n] !== option) .forEach(n => { overrides[n] = option; }); Object.keys(originals) .filter(n => originals[n] === option) .filter(n => values.indexOf(n) === -1) .forEach(n => { missing[n] = 'none'; }); /* Preserve previously negated overrides */ Object.keys(this._overrides) .filter(n => this._overrides[n] === 'none') .filter(n => values.indexOf(n) === -1) .forEach(n => { missing[n] = 'none'; }); this._overrides = overrides; this._missing = missing; /* Add missing ones after Own since it's the last to update */ if (option !== 'own') return; this._overrides = {...this._missing, ...this._overrides}; } _getStatusForPermission(name) { let status = FlatsealOverrideStatus.ORIGINAL; if (name in this._globals) status = FlatsealOverrideStatus.GLOBAL; if (name in this._overrides) status = FlatsealOverrideStatus.USER; return status; } updateStatusProperty(proxy) { const prefix = this.constructor.getPrefix(); const talk_values = proxy[`${prefix}-talk`] .split(';') .filter(n => n.length !== 0) .map(n => this._getStatusForPermission(n)); const own_values = proxy[`${prefix}-own`] .split(';') .filter(n => n.length !== 0) .map(n => this._getStatusForPermission(n)); proxy.set_property(`${prefix}-talk-status`, talk_values.join(';')); proxy.set_property(`${prefix}-own-status`, own_values.join(';')); } updateProxyProperty(proxy) { const options = {talk: [], own: [], none: []}; const values = {...this._originals, ...this._globals, ...this._overrides}; Object.entries(values).forEach(([name, option]) => { if (!(option in options)) return; options[option].push(name); }); const prefix = this.constructor.getPrefix(); proxy.set_property(`${prefix}-talk`, this.constructor.serialize(options['talk'])); proxy.set_property(`${prefix}-own`, this.constructor.serialize(options['own'])); } loadFromKeyFile(group, name, option, overrides, global) { const dictionary = this._findProperSet(overrides, global); dictionary[name] = option; } saveToKeyFile(keyFile) { const group = this.constructor.getGroup(); Object.entries(this._overrides).forEach(([key, value]) => { keyFile.set_value(group, key, value); }); } reset() { this._overrides = {}; this._globals = {}; this._originals = {}; this._missing = {}; } }); flatseal-2.3.0/src/models/settings.js000066400000000000000000000035331467660615300176010ustar00rootroot00000000000000/* exported FlatsealSettingsModel getDefault */ /* settings.js * * Copyright 2021 Martin Abente Lahaye * * 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 . */ const {GObject, Gio} = imports.gi; var FlatsealSettingsModel = GObject.registerClass({ GTypeName: 'FlatsealSettingsModel', }, class FlatsealSettingsModel extends GObject.Object { _init() { super._init({}); this._settings = new Gio.Settings({schema_id: 'com.github.tchx84.Flatseal'}); } restoreWindowState(window) { window.default_width = this._settings.get_int('window-width'); window.default_height = this._settings.get_int('window-height'); if (this._settings.get_boolean('window-maximized')) window.maximize(); } saveWindowState(window) { if (!window.maximized) { const [width, height] = window.get_default_size(); this._settings.set_int('window-width', width); this._settings.set_int('window-height', height); } this._settings.set_boolean('window-maximized', window.maximized); } getSelectedAppId() { return this._settings.get_string('selected-app-id'); } setSelectedAppId(appId) { this._settings.set_string('selected-app-id', appId); } }); flatseal-2.3.0/src/models/shared.js000066400000000000000000000143511467660615300172070ustar00rootroot00000000000000/* exported FlatpakSharedModel */ /* shared.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {info} = imports.models; const {FlatsealOverrideStatus} = imports.models.overrideStatus; var FlatpakSharedModel = GObject.registerClass({ GTypeName: 'FlatpakSharedModel', }, class FlatpakSharedModel extends GObject.Object { _init() { super._init({}); this._info = info.getDefault(); this.reset(); } getPermissions() { return { 'shared-network': { supported: this._info.supports('0.4.0'), description: _('Network'), option: 'network', value: this.constructor.getDefault(), example: 'share=network', }, 'shared-ipc': { supported: this._info.supports('0.4.0'), description: _('Inter-process communications'), option: 'ipc', value: this.constructor.getDefault(), example: 'share=ipc', }, }; } static getGroup() { return 'Context'; } static getKey() { return 'shared'; } static getType() { return 'state'; } static getDefault() { return false; } static getStyle() { return 'shared'; } static getTitle() { return 'Share'; } static getDescription() { return _('List of subsystems shared with the host system'); } static serialize(values) { return values.join(';'); } static deserialize(value) { return value.split(';'); } getOptions() { return Object.entries(this.getPermissions()) .map(([, permission]) => permission.option); } updateFromProxyProperty(property, value) { const permission = this.getPermissions()[property]; const {option} = permission; const override = value ? option : `!${option}`; /* Determine if this value is an actual override */ /* Preserve previously negated overrides */ const matchesDefault = value === permission.value && !this._overrides.has(override); const fromOriginals = this._originals.has(override); const fromGlobals = this._globals.has(override); const seenInOriginals = this.constructor._isOverriden(this._originals, override); const seenInGlobals = this.constructor._isOverriden(this._globals, override); /* Assume it isn't */ this._overrides.delete(option); this._overrides.delete(`!${option}`); /* Ignore if it came from originals or from globals */ if (fromOriginals && !seenInGlobals || fromGlobals) return; /* Ignore if it's just the default value */ if (matchesDefault && !seenInGlobals && !seenInOriginals) return; /* It's an override */ this._overrides.add(override); } static _isOverriden(set, permission) { const option = permission.replace('!', ''); return set.has(option) || set.has(`!${option}`); } _getStatusForPermission(permission) { let status = FlatsealOverrideStatus.ORIGINAL; if (this._globals.has(permission) || this._globals.has(`!${permission}`)) status = FlatsealOverrideStatus.GLOBAL; if (this._overrides.has(permission) || this._overrides.has(`!${permission}`)) status = FlatsealOverrideStatus.USER; return status; } updateStatusProperty(proxy) { Object.entries(this.getPermissions()).forEach(([property, permission]) => { const {option} = permission; const statusProperty = `${property}-status`; const status = this._getStatusForPermission(option); proxy.set_property(statusProperty, status); }); } updateProxyProperty(proxy) { const originals = [...this._originals] .filter(o => !this.constructor._isOverriden(this._globals, o)) .filter(o => !this.constructor._isOverriden(this._overrides, o)); const globals = [...this._globals] .filter(g => !this.constructor._isOverriden(this._overrides, g)); const permissions = new Set([...originals, ...globals, ...this._overrides]); Object.entries(this.getPermissions()).forEach(([property, permission]) => { let value = this.constructor.getDefault(); const {option} = permission; if (permissions.has(option)) value = true; if (permissions.has(`!${option}`)) value = false; proxy.set_property(property, value); }); } _findProperSet(overrides, global) { if (overrides && global) return this._globals; if (overrides && !global) return this._overrides; return this._originals; } loadFromKeyFile(group, key, value, overrides, global) { const set = this._findProperSet(overrides, global); set.add(value); } saveToKeyFile(keyFile) { const group = this.constructor.getGroup(); const key = this.constructor.getKey(); this._overrides.forEach(value => { let _value = value; try { const existing = keyFile.get_value(group, key); _value = `${value};${existing}`; } catch (err) { _value = `${value}`; } keyFile.set_value(group, key, _value); }); } reset() { this._overrides = new Set(); this._globals = new Set(); this._originals = new Set(); } }); flatseal-2.3.0/src/models/sockets.js000066400000000000000000000111521467660615300174100ustar00rootroot00000000000000/* exported FlatpakSocketsModel */ /* sockets.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {FlatpakSharedModel} = imports.models.shared; var FlatpakSocketsModel = GObject.registerClass({ GTypeName: 'FlatpakSocketsModel', }, class FlatpakSocketsModel extends FlatpakSharedModel { _init() { super._init({}); } getPermissions() { return { 'sockets-x11': { supported: this._info.supports('0.4.0'), description: _('X11 windowing system'), option: 'x11', value: this.constructor.getDefault(), example: 'socket=x11', }, 'sockets-wayland': { supported: this._info.supports('0.4.0'), description: _('Wayland windowing system'), option: 'wayland', value: this.constructor.getDefault(), example: 'socket=wayland', }, 'sockets-fallback-x11': { supported: this._info.supports('0.11.1'), description: _('Fallback to X11 windowing system'), option: 'fallback-x11', value: this.constructor.getDefault(), example: 'socket=fallback-x11', }, 'sockets-pulseaudio': { supported: this._info.supports('0.4.0'), description: _('PulseAudio sound server'), option: 'pulseaudio', value: this.constructor.getDefault(), example: 'socket=pulseaudio', }, 'sockets-session-bus': { supported: this._info.supports('0.4.0'), description: _('D-Bus session bus'), option: 'session-bus', value: this.constructor.getDefault(), example: 'socket=session-bus', }, 'sockets-system-bus': { supported: this._info.supports('0.4.0'), description: _('D-Bus system bus'), option: 'system-bus', value: this.constructor.getDefault(), example: 'socket=system-bus', }, 'sockets-ssh-auth': { supported: this._info.supports('0.99.1'), description: _('Secure Shell agent'), option: 'ssh-auth', value: this.constructor.getDefault(), example: 'socket=ssh-auth', }, 'sockets-pcsc': { supported: this._info.supports('1.3.2'), description: _('Smart cards'), option: 'pcsc', value: this.constructor.getDefault(), example: 'socket=pcsc', }, 'sockets-cups': { supported: this._info.supports('1.5.2'), description: _('Printing system'), option: 'cups', value: this.constructor.getDefault(), example: 'socket=cups', }, 'sockets-gpg-agent': { supported: this._info.supports('1.14.0'), description: _('GPG-Agent directories'), option: 'gpg-agent', value: this.constructor.getDefault(), example: 'socket=gpg-agent', }, 'sockets-inherit-wayland-socket': { supported: this._info.supports('1.15.7'), description: _('Inherit Wayland socket'), option: 'inherit-wayland-socket', value: this.constructor.getDefault(), example: 'socket=inherit-wayland-socket', }, }; } static getGroup() { return 'Context'; } static getKey() { return 'sockets'; } static getStyle() { return 'sockets'; } static getTitle() { return 'Socket'; } static getDescription() { return _('List of well-known sockets available in the sandbox'); } }); flatseal-2.3.0/src/models/systemBus.js000066400000000000000000000040231467660615300177320ustar00rootroot00000000000000/* exported FlatpakSystemBusModel */ /* sessionBus.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {FlatpakSessionBusModel} = imports.models.sessionBus; var FlatpakSystemBusModel = GObject.registerClass({ GTypeName: 'FlatpakSystemBusModel', }, class FlatpakSystemBusModel extends FlatpakSessionBusModel { _init() { super._init({}); } getPermissions() { return { 'system-talk': { supported: this._info.supports('0.4.0'), description: _('Talks'), option: 'talk', value: this.constructor.getDefault(), example: 'e.g. org.freedesktop.Accounts', }, 'system-own': { supported: this._info.supports('0.4.0'), description: _('Owns'), option: 'own', value: this.constructor.getDefault(), example: 'e.g. org.freedesktop.GeoClue2', }, }; } static getGroup() { return 'System Bus Policy'; } static getKey() { return null; } static getPrefix() { return 'system'; } static getStyle() { return 'system'; } static getTitle() { return 'System Bus'; } static getDescription() { return _('List of well-known names on the system bus'); } }); flatseal-2.3.0/src/models/unsupported.js000066400000000000000000000042741467660615300203340ustar00rootroot00000000000000/* exported FlatpakUnsupportedModel */ /* eslint class-methods-use-this: */ /* unsupported.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; var FlatpakUnsupportedModel = GObject.registerClass({ GTypeName: 'FlatpakUnsupportedModel', }, class FlatpakUnsupportedModel extends GObject.Object { _init() { super._init(); this.reset(); } getPermissions() { return {}; } static getGroup() { return 'unsupported'; } static getKey() { return null; } getOptions() { // eslint-disable-line class-methods-use-this return null; } updateFromProxyProperty() { // eslint-disable-line class-methods-use-this return false; } updateStatusProperty() { /* does not apply to this backend */ } updateProxyProperty() { // eslint-disable-line class-methods-use-this return false; } loadFromKeyFile(group, key, value) { this._permissions.add([group, key, value]); return true; } saveToKeyFile(keyFile) { this._permissions.forEach(([group, key, value]) => { let _value; try { const existing = keyFile.get_value(group, key); _value = `${value};${existing}`; } catch (err) { _value = `${value}`; } keyFile.set_value(group, key, _value); }); } reset() { this._permissions = new Set(); } isEmpty() { return this._permissions.size === 0; } }); flatseal-2.3.0/src/models/variables.js000066400000000000000000000113741467660615300177130ustar00rootroot00000000000000/* exported FlatpakVariablesModel */ /* variables.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject} = imports.gi; const {FlatpakSharedModel} = imports.models.shared; const {FlatsealOverrideStatus} = imports.models.overrideStatus; var VAR_REGEXP = /^\w+=[\S ]+$/; var FlatpakVariablesModel = GObject.registerClass({ GTypeName: 'FlatpakVariablesModel', }, class FlatpakVariablesModel extends FlatpakSharedModel { _init() { super._init({}); this.reset(); } getPermissions() { return { variables: { supported: this._info.supports('0.4.0'), description: _('Variables'), option: null, value: this.constructor.getDefault(), example: _('e.g. GTK_DEBUG=interactive'), }, }; } static getDefault() { return ''; } static getType() { return 'variable'; } static getGroup() { return 'Environment'; } static getKey() { return null; } static getStyle() { return 'environment'; } static getTitle() { return 'Environment'; } static getDescription() { return _('List of variables exported to the application'); } static deserialize(value) { return value .split(/(?=;[\w\s]+=)/) .map(v => v.replace(/^;/, '')); } getOptions() { // eslint-disable-line class-methods-use-this return null; } updateFromProxyProperty(property, value) { const overrides = {}; const variables = {}; const originals = {...this._originals, ...this._globals}; this.constructor.deserialize(value) .filter(v => this._expression.test(v)) .map(v => v.split(/[=](.*)/s)) .forEach(([k, v]) => { variables[k] = v; }); Object.entries(variables) .filter(([k, v]) => !(k in originals) || originals[k] !== v) .forEach(([k, v]) => { overrides[k] = v; }); Object.keys(originals) .filter(k => !(k in variables)) .filter(k => originals[k] !== '') .forEach(k => { overrides[k] = ''; }); /* Preserve previously negated overrides */ Object.keys(this._overrides) .filter(k => !(k in variables)) .filter(k => this._overrides[k] === '') .forEach(k => { overrides[k] = ''; }); this._overrides = overrides; } _getStatusForPermission(variable) { const [key] = variable.split(/[=](.*)/s); let status = FlatsealOverrideStatus.ORIGINAL; if (key in this._globals) status = FlatsealOverrideStatus.GLOBAL; if (key in this._overrides) status = FlatsealOverrideStatus.USER; return status; } updateStatusProperty(proxy) { const values = this.constructor.deserialize(proxy.variables) .filter(v => v.length !== 0) .map(v => this._getStatusForPermission(v)); proxy.set_property('variables-status', values.join(';')); } updateProxyProperty(proxy) { let variables = {...this._originals, ...this._globals, ...this._overrides}; variables = Object.entries(variables) .filter(([, value]) => value.length !== 0) .map(([key, value]) => `${key}=${value}`); proxy.set_property('variables', this.constructor.serialize(variables)); } loadFromKeyFile(group, key, value, overrides, global) { if (!overrides && value.length === 0) return; const dict = this._findProperSet(overrides, global); dict[key] = value; } saveToKeyFile(keyFile) { const group = this.constructor.getGroup(); Object.entries(this._overrides).forEach(([key, value]) => { keyFile.set_value(group, key, value); }); } reset() { this._overrides = {}; this._globals = {}; this._originals = {}; this._expression = new RegExp(VAR_REGEXP); } }); flatseal-2.3.0/src/style.css000066400000000000000000000041231467660615300157660ustar00rootroot00000000000000.navigation-sidebar row { padding: 3px 0px; } .permissions clamp { margin-bottom: 25px; } row .status { padding: 8px; background-color: transparent; background-image: -gtk-icontheme("dialog-warning-symbolic"); background-repeat: no-repeat; background-position: center; background-size: 16px; } row .status.user { color: @accent_color; } row .status.global { color: @insensitive_fg_color; } row .content .bus .info, row .content .variable .info, row .content .path .info { padding: 8px; color: @accent_color; background-color: transparent; background-image: -gtk-icontheme("dialog-question-symbolic"); background-repeat: no-repeat; background-position: center; background-size: 16px; } row .content .relative.path .info, row .content .bus .info, row .content .variable .info { background-image: -gtk-icontheme("emblem-ok-symbolic"); } row .content .bus.not-valid .info, row .content .variable.not-valid .info, row .content .path.not-valid .info { color: @warning_color; background-image: -gtk-icontheme("dialog-warning-symbolic"); } row .content entry, row .content .status, row .content button { margin-left: 8px; } row .content .path popover treeview { color: @insensitive_fg_color; font-size: small; background-color: transparent; } row .content .path popover treeview:selected { background-color: @theme_bg_color; } .permissions .app-info { margin-top: 15px; } .permissions .app-info.compact { margin-top: 5px; margin-bottom: 5px; } .permissions .app-info .icon { margin: 25px 25px 25px 0px; } .permissions .app-info.compact .icon { margin: 5px 0px 5px 0px; } .permissions .app-info .name { font-size: xx-large; font-weight: 800; margin-bottom: 5px; } .permissions .app-info .author { margin-bottom: 15px; } .permissions .app-info.compact .author { margin-bottom: 25px; } .permissions .app-info .description { color: @insensitive_fg_color; margin-bottom: 5px; } .permissions .app-info .value { margin-bottom: 5px; } .reset-button image { color: @warning_color; } flatseal-2.3.0/src/widgets/000077500000000000000000000000001467660615300155625ustar00rootroot00000000000000flatseal-2.3.0/src/widgets/aboutDialog.js000066400000000000000000000020151467660615300203500ustar00rootroot00000000000000/* exported showAboutDialog */ /* aboutDialog.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {Gtk} = imports.gi; const ABOUT_RESOURCE = '/com/github/tchx84/Flatseal/widgets/aboutDialog.ui'; function showAboutDialog(window) { const builder = Gtk.Builder.new_from_resource(ABOUT_RESOURCE); const dialog = builder.get_object('about-window'); dialog.present(window); } flatseal-2.3.0/src/widgets/aboutDialog.ui000066400000000000000000000026661467660615300203650ustar00rootroot00000000000000 Flatseal 2.3.0 © 2020-2024 Martin Abente Lahaye https://github.com/tchx84/Flatseal/issues/new Martin Abente Lahaye Martin Abente Lahaye Bilal Elmoussaoui Adrien Plazas Kevin Degeling Mufeed Ali Leorize Christopher Davis Lctrs Will Thompson Jonas Johan Solsvik Maximiliano Sandoval Ferenc rusty-snake Guilhem Morer Fiana Fortressia Hubert Figuière Daniel Rusek Heimen Stoffels Tim Rieck Óvári Milo Casagrande Kukuh Syafaat Ã…ke Engelbrektson BartÅ‚omiej Garbiec Ãcar Nin Solana BigmenPixel0 Ümit Solmaz Exponentactivity Eric Zhang Georgi Georgiev Sabri Ünal Mathieu Bousquet Yaron Shahrabani K.B.Dharun Krishna Dingzhong Chen Philipp Kiemle Vovkiv Nikolai Eugen Sandvik Aleksandr Melman Lucas Serrano Benedek Dévényi Athanasios Karachalios Scrambled777 Tobias Bernard J.P. MacDonald TheEvilSkeleton com.github.tchx84.Flatseal gpl-3-0 flatseal-2.3.0/src/widgets/appInfoViewer.js000066400000000000000000000070721467660615300207040ustar00rootroot00000000000000/* exported FlatsealAppInfoViewer */ /* eslint accessor-pairs: */ /* appInfoViewer.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, GLib, Gtk} = imports.gi; const {applications} = imports.models; const _propFlags = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; const styles = { NORMAL: 'normal', COMPACT: 'compact', }; var FlatsealAppInfoViewer = GObject.registerClass({ GTypeName: 'FlatsealAppInfoViewer', Template: 'resource:///com/github/tchx84/Flatseal/widgets/appInfoViewer.ui', InternalChildren: ['icon', 'name', 'author', 'version', 'released', 'runtime'], Properties: { compact: GObject.ParamSpec.boolean( 'compact', 'compact', 'compact', _propFlags, false), }, }, class FlatsealAppInfoViewer extends Gtk.Box { _init() { super._init(); this._appId = ''; this._compact = false; this._applications = applications.getDefault(); this._validator = new RegExp(/^(\d+)-(\d+)-(\d+)$/); } _getFormattedDate(string) { if (!this._validator.test(string)) return string; const [, year, month, day] = string.match(this._validator); const date = GLib.DateTime.new(GLib.TimeZone.new_local(), year, month, day, 0, 0, 0); /* TRANSLATORS: , */ return date.format(_('%B %e, %Y')); } _setup() { const appdata = this._applications.getAppDataForAppId(this._appId); const desktop = this._applications.getDesktopForAppData(appdata); this._name.set_label(appdata.name); this._author.set_label(appdata.author); this._version.set_label(appdata.version); this._released.set_label(this._getFormattedDate(appdata.date)); this._icon.set_from_icon_name(desktop.icon); const metadata = this._applications.getMetadataForAppId(this._appId); this._runtime.set_label(metadata.runtime); } set appId(id) { this._appId = id; this._setup(); } set compact(value) { if (typeof this._icon === 'undefined') return; if (this._compact === value) return; const orientation = value ? Gtk.Orientation.VERTICAL : Gtk.Orientation.HORIZONTAL; const alignment = value ? Gtk.Align.CENTER : Gtk.Align.START; this.set_orientation(orientation); this._icon.halign = alignment; this._name.halign = alignment; this._author.halign = alignment; this.halign = alignment; const style = value ? styles.COMPACT : styles.NORMAL; const context = this.get_style_context(); if (context.has_class(styles.NORMAL)) context.remove_class(styles.NORMAL); if (context.has_class(styles.COMPACT)) context.remove_class(styles.COMPACT); context.add_class(style); this._compact = value; } }); flatseal-2.3.0/src/widgets/appInfoViewer.ui000066400000000000000000000116601467660615300207030ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/applicationRow.js000066400000000000000000000025761467660615300211250ustar00rootroot00000000000000/* exported FlatsealApplicationRow */ /* applicationRow.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GLib, GObject, Adw} = imports.gi; var FlatsealApplicationRow = GObject.registerClass({ GTypeName: 'FlatsealApplicationRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/applicationRow.ui', InternalChildren: ['icon'], }, class FlatsealApplicationRow extends Adw.ActionRow { _init(appId, appName, appIconName) { super._init(); this._icon.set_from_icon_name(appIconName); this.set_title(GLib.markup_escape_text(appName, -1)); this.set_subtitle(appId); } get appId() { return this.get_subtitle(); } get appName() { return this.get_title(); } }); flatseal-2.3.0/src/widgets/applicationRow.ui000066400000000000000000000013711467660615300211160ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/busNameRow.js000066400000000000000000000061501467660615300202040ustar00rootroot00000000000000/* exported FlatsealBusNameRow */ /* busNameRow.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk} = imports.gi; const {FlatsealOverrideStatusIcon} = imports.widgets.overrideStatusIcon; const _propFlags = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; /* https://dbus.freedesktop.org/doc/dbus-specification.html */ const EXP = /^(([A-Z]|[a-z]|[0-9]|_|-)+)(\.(([A-Z]|[a-z]|[0-9]|_|-)+))+(\.\*){0,1}$/; var validity = { VALID: 'valid', NOTVALID: 'not-valid', }; const _notValidMsg = _('This is not a valid option'); var FlatsealBusNameRow = GObject.registerClass({ GTypeName: 'FlatsealBusNameRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/busNameRow.ui', InternalChildren: ['entry', 'button', 'image', 'statusBox'], Properties: { text: GObject.ParamSpec.string( 'text', 'text', 'text', _propFlags, ''), }, Signals: { 'remove-requested': {}, }, }, class FlatsealBusNameRow extends Gtk.Box { _init() { super._init({}); this._setup(); } _setup() { this._expression = new RegExp(EXP); this._entry.connect('notify::text', this._changed.bind(this)); this._button.connect('clicked', this._remove.bind(this)); this._statusIcon = new FlatsealOverrideStatusIcon(); this._statusBox.append(this._statusIcon); this._validate(); } _remove() { this.emit('remove-requested'); } _changed() { this._validate(); this.notify('text'); } _validate() { const context = this.get_style_context(); if (context.has_class(validity.VALID)) context.remove_class(validity.VALID); else if (context.has_class(validity.NOTVALID)) context.remove_class(validity.NOTVALID); if (this._expression.test(this.text)) { context.add_class(validity.VALID); this._image.set_tooltip_text(''); } else { context.add_class(validity.NOTVALID); this._image.set_tooltip_text(_notValidMsg); } } get text() { if (!this._entry) return ''; return this._entry.get_text(); } set text(text) { if (this.text === text) return; this._entry.set_text(text); } get status() { return this._statusIcon.status; } set status(status) { this._statusIcon.status = status; } }); flatseal-2.3.0/src/widgets/busNameRow.ui000066400000000000000000000023101467660615300201770ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/detailsButton.js000066400000000000000000000070501467660615300207430ustar00rootroot00000000000000/* exported FlatsealDetailsButton */ /* detailsButton.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {Gio, GObject, Gtk, GLib} = imports.gi; const GSActivateIface = ` `; const DBListNamesIface = ` `; var FlatsealDetailsButton = GObject.registerClass({ GTypeName: 'FlatsealDetailsButton', }, class FlatsealDetailsButton extends Gtk.Button { _init(permissions) { super._init(); this._setup(permissions); } _setup(permissions) { this._proxy = null; this._permissions = permissions; this._foundManager = false; this.set_use_underline(true); this.set_label(_('_Show Details')); this.connect('clicked', this._clicked.bind(this)); this._checkSoftwareManager(); } _checkSoftwareManager() { try { const DBListNamesProxy = Gio.DBusProxy.makeProxyWrapper(DBListNamesIface); const proxy = new DBListNamesProxy( Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus'); proxy.ListActivatableNamesRemote(([services], err) => { this._foundManager = !err && services.indexOf('org.gnome.Software') !== -1; this._update(); }); } catch (err) { this._foundManager = false; this._update(); } } _clicked() { try { const GSProxy = Gio.DBusProxy.makeProxyWrapper(GSActivateIface); this._proxy = new GSProxy( Gio.DBus.session, 'org.gnome.Software', '/org/gnome/Software', this._launchSoftwareManager.bind(this)); } catch (err) { logError(err); } } _launchSoftwareManager() { try { const args = GLib.Variant.new('(ss)', [this._permissions.appId, '']); this._proxy.ActivateRemote('details', [args], null); } catch (err) { logError(err); } } _update() { this.sensitive = this._foundManager && this._permissions.appId; if (this.sensitive) this.set_tooltip_text(_('Show application in a software manager')); else this.set_tooltip_text(_('No software manager found')); } enable() { this._update(); } disable() { this.sensitive = false; this.set_tooltip_text(''); } }); flatseal-2.3.0/src/widgets/docsViewer.js000066400000000000000000000130601467660615300202320ustar00rootroot00000000000000/* exported FlatsealDocsViewer */ /* docsViewer.js * * Copyright 2021 Martin Abente Lahaye * * 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 . */ const {GLib, Gtk, GObject, Adw, WebKit} = imports.gi; const {WebView} = imports.gi.WebKit; // eslint-disable-line no-unused-vars const MAX_RESULTS = 10; var FlatsealDocsViewer = GObject.registerClass({ GTypeName: 'FlatsealDocsViewer', Template: 'resource:///com/github/tchx84/Flatseal/widgets/docsViewer.ui', InternalChildren: [ 'webview', 'backButton', 'forwardButton', 'previousButton', 'nextButton', 'searchButton', 'searchBar', 'searchEntry', ], Signals: { close: { flags: GObject.SignalFlags.RUN_LAST | GObject.SignalFlags.ACTION, }, }, }, class FlatsealDocsViewer extends Adw.Window { _init(parent) { super._init({}); this._setup(parent); } _setup(parent) { const [width, height] = parent.get_default_size(); this.default_width = width; this.default_height = height; this.transient_for = parent; this.application = parent.application; const path = GLib.build_filenamev([ imports.package.datadir, 'help', 'C', 'flatseal', 'index.html', ]); this._webview.load_uri(`file://${path}`); /* Force it to use browser history with inner anchors */ this._webview.connect('notify::uri', this._loadUri.bind(this)); /* Use system web browser for external urls */ this._webview.connect('decide-policy', this._decidePolicy.bind(this)); /* Update navigation buttons on every history change */ this._webview.connect_after('load-changed', this._updateNavigation.bind(this)); this._backButton.connect('clicked', this._goBack.bind(this)); this._forwardButton.connect('clicked', this._goForward.bind(this)); this._searchEntry.connect('search-changed', this._resetSearch.bind(this)); this._searchEntry.connect('stop-search', this._cancelSearch.bind(this)); this._searchEntry.connect('next-match', this._searchNext.bind(this)); this._searchEntry.connect('previous-match', this._searchPrevious.bind(this)); this._previousButton.connect('clicked', this._searchPrevious.bind(this)); this._nextButton.connect('clicked', this._searchNext.bind(this)); this._searchButton.connect('toggled', this._toggleSearchWithButton.bind(this)); this._searchButton.bind_property( 'active', this._searchBar, 'search-mode-enabled', GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE); this._searchBar.connect( 'notify::search-mode-enabled', this._enableSearchController.bind(this)); this._searchBar.connect_entry(this._searchEntry); this._searchBar.set_key_capture_widget(this); } _loadUri() { this._webview.load_uri(this._webview.uri); } _decidePolicy(webview, decision, type) { // eslint-disable-line class-methods-use-this if (type !== WebKit.PolicyDecisionType.NAVIGATION_ACTION) return false; const action = decision.get_navigation_action(); const uri = action.get_request().get_uri(); if (!uri.startsWith('file')) { const launcher = new Gtk.UriLauncher(); launcher.uri = uri; launcher.launch(this, null, this._openUri); decision.ignore(); return true; } return false; } _openUri(launcher, res) { // eslint-disable-line class-methods-use-this try { launcher.launch_finish(res); } catch (err) { logError(err); } } _updateNavigation() { this._backButton.sensitive = this._webview.can_go_back(); this._forwardButton.sensitive = this._webview.can_go_forward(); } _goBack() { this._webview.go_back(); } _goForward() { this._webview.go_forward(); } _toggleSearchWithButton() { if (this._searchButton.active) this._searchEntry.grab_focus(); else this._searchButton.grab_focus(); } _enableSearchController() { if (this._searchBar.search_mode_enabled) this._findController = this._webview.get_find_controller(); else this._findController.search_finish(); } _cancelSearch() { if (this._searchEntry.get_text() === '') this._searchBar.search_mode_enabled = false; this._searchEntry.set_text(''); } _resetSearch() { this._findController.search( this._searchEntry.text, WebKit.FindOptions.CASE_INSENSITIVE | WebKit.FindOptions.WRAP_AROUND, MAX_RESULTS); } _searchPrevious() { this._findController.search_previous(); } _searchNext() { this._findController.search_next(); } }); flatseal-2.3.0/src/widgets/docsViewer.ui000066400000000000000000000061141467660615300202350ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/globalInfoViewer.js000066400000000000000000000056161467660615300213660ustar00rootroot00000000000000/* exported FlatsealGlobalInfoViewer */ /* eslint accessor-pairs: */ /* globalInfoViewer.js * * Copyright 2022 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk} = imports.gi; const _propFlags = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; const {info, permissions, portals} = imports.models; const styles = { NORMAL: 'normal', COMPACT: 'compact', }; var FlatsealGlobalInfoViewer = GObject.registerClass({ GTypeName: 'FlatsealGlobalInfoViewer', Template: 'resource:///com/github/tchx84/Flatseal/widgets/globalInfoViewer.ui', InternalChildren: ['icon', 'title', 'description', 'flatpak', 'portal', 'overrides'], Properties: { compact: GObject.ParamSpec.boolean( 'compact', 'compact', 'compact', _propFlags, false), }, }, class FlatsealGlobalInfoViewer extends Gtk.Box { _init() { super._init(); this._compact = false; this._setup(); } _setup() { this.constructor._setIfAvailable(this._flatpak, info.getDefault().getVersion()); this.constructor._setIfAvailable(this._portal, portals.getDefault().getVersion()); this.constructor._setIfAvailable(this._overrides, permissions.getDefault()._getBaseOverridesPath()); } static _setIfAvailable(label, value) { if (!value) return; label.set_label(value.toString()); } set compact(value) { if (typeof this._icon === 'undefined') return; if (this._compact === value) return; const orientation = value ? Gtk.Orientation.VERTICAL : Gtk.Orientation.HORIZONTAL; const alignment = value ? Gtk.Align.CENTER : Gtk.Align.START; this.set_orientation(orientation); this._icon.halign = alignment; this._title.halign = alignment; this._description.halign = alignment; this.halign = alignment; const style = value ? styles.COMPACT : styles.NORMAL; const context = this.get_style_context(); if (context.has_class(styles.NORMAL)) context.remove_class(styles.NORMAL); if (context.has_class(styles.COMPACT)) context.remove_class(styles.COMPACT); context.add_class(style); this._compact = value; } }); flatseal-2.3.0/src/widgets/globalInfoViewer.ui000066400000000000000000000145561467660615300213720ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/globalRow.js000066400000000000000000000022531467660615300200520ustar00rootroot00000000000000/* exported FlatsealGlobalRow */ /* globalRow.js * * Copyright 2022 Martin Abente Lahaye * * 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 . */ const {GObject, Adw} = imports.gi; var FlatsealGlobalRow = GObject.registerClass({ GTypeName: 'FlatsealGlobalRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/globalRow.ui', InternalChildren: ['icon'], }, class FlatsealGlobalRow extends Adw.ActionRow { _init() { super._init(); } get appId() { return this.get_subtitle(); } get appName() { return this.get_title(); } }); flatseal-2.3.0/src/widgets/globalRow.ui000066400000000000000000000015661467660615300200610ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/menu.ui000066400000000000000000000014021467660615300170620ustar00rootroot00000000000000
app.help _Help app.documentation _Documentation app.shortcuts _Keyboard Shortcuts app.about _About Flatseal
flatseal-2.3.0/src/widgets/overrideStatusIcon.js000066400000000000000000000045071467660615300217620ustar00rootroot00000000000000/* exported FlatsealOverrideStatusIcon OverrideStatus */ /* overrideStatusIcon.js * * Copyright 2022 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk} = imports.gi; const {FlatsealOverrideStatus} = imports.models.overrideStatus; const OverrideStatusDescription = { global: _('Changed globally'), user: _('Changed by the user'), }; var FlatsealOverrideStatusIcon = GObject.registerClass({ GTypeName: 'FlatsealOverrideStatusIcon', Template: 'resource:///com/github/tchx84/Flatseal/widgets/overrideStatusIcon.ui', Properties: { status: GObject.ParamSpec.string( 'status', 'status', 'status', GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, FlatsealOverrideStatus.ORIGINAL, ), }, }, class FlatsealOverrideStatusIcon extends Gtk.Image { _init() { super._init({}); this._status = FlatsealOverrideStatus.ORIGINAL; } set status(status) { if (this._status === status) return; const context = this.get_style_context(); if (context.has_class(FlatsealOverrideStatus.USER)) context.remove_class(FlatsealOverrideStatus.USER); else if (context.has_class(FlatsealOverrideStatus.GLOBAL)) context.remove_class(FlatsealOverrideStatus.GLOBAL); this._status = status; if (status === FlatsealOverrideStatus.ORIGINAL) { this.set_tooltip_text(''); this.visible = false; return; } this.set_tooltip_text(OverrideStatusDescription[status]); this.visible = true; context.add_class(status); } get status() { return this._status; } }); flatseal-2.3.0/src/widgets/overrideStatusIcon.ui000066400000000000000000000003061467660615300217540ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/pathRow.js000066400000000000000000000163051467660615300175510ustar00rootroot00000000000000/* exported FlatsealPathRow */ /* pathRow.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk} = imports.gi; const {FlatsealOverrideStatusIcon} = imports.widgets.overrideStatusIcon; const _propFlags = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; const _options = { '/': _('this absolute path'), '~/': _('this path relative to the home directory'), 'host-etc': _('all system configurations'), 'host-os': _('all system libraries, executables and static data'), host: _('all system files'), home: _('all user files'), 'xdg-desktop': _('the desktop directory'), 'xdg-documents': _('the documents directory'), 'xdg-download': _('the download directory'), 'xdg-music': _('the music directory'), 'xdg-pictures': _('the pictures directory'), 'xdg-public-share': _('the public directory'), 'xdg-videos': _('the videos directory'), 'xdg-templates': _('the templates directory'), 'xdg-config': _('the config directory'), 'xdg-cache': _('the cache directory'), 'xdg-data': _('the data directory'), 'xdg-run': _('the runtime directory'), }; var mode = { READONLY: 'read-only', READWRITE: 'read-write', CREATE: 'create', }; var validity = { VALID: 'valid', NOTVALID: 'not-valid', }; const _modeDescription = { 'read-only': _('Can read: %s'), 'read-write': _('Can modify and read: %s'), create: _('Can create, modify and read: %s'), }; const _negationSymbol = '!'; const _negationRegex = '^!{0,1}'; const _modeNegatedDescription = { 'read-only': _('Can\'t read: %s'), 'read-write': _('Can\'t modify or read: %s'), create: _('Can\'t create, modify or read: %s'), reset: _('Can\'t create, modify or read: %s'), }; const _notValidMsg = _('This is not a valid option'); var FlatsealPathRow = GObject.registerClass({ GTypeName: 'FlatsealPathRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/pathRow.ui', InternalChildren: ['entry', 'button', 'store', 'completion', 'image', 'statusBox'], Properties: { text: GObject.ParamSpec.string( 'text', 'text', 'text', _propFlags, ''), mode: GObject.ParamSpec.string( 'mode', 'mode', 'mode', _propFlags, mode.READONLY), }, Signals: { 'remove-requested': {}, }, }, class FlatsealPathRow extends Gtk.Box { _init() { this._mode = mode.READONLY; super._init({}); this._setup(); } _setup() { this._statusIcon = new FlatsealOverrideStatusIcon(); this._statusBox.append(this._statusIcon); Object.keys(_options).forEach(option => { this._store.set(this._store.append(), [0], [option]); this._store.set(this._store.append(), [0], [`!${option}`]); }); /* XXX workaround property deprecation until GtkSuggestionEntry*/ this._completion.set_text_column(0); const paths = Object.keys(_options) .slice(0, 2) .join('|'); this._pathRE = new RegExp(`${_negationRegex}((${paths})[^/]+)+/{0,1}(? { if (text.startsWith(option)) { optionMsg = _options[option]; return true; } return false; }); this._image.set_tooltip_text(modeMsg.format(optionMsg)); } _validate() { const negated = this.text.startsWith(_negationSymbol); const context = this.get_style_context(); if (context.has_class(validity.VALID)) context.remove_class(validity.VALID); else if (context.has_class(validity.NOTVALID)) context.remove_class(validity.NOTVALID); if ((this._pathRE.test(this.text) || this._optionRE.test(this.text)) && (!negated && this._modeRE.test(this.text) || negated && this._negationModeRE.test(this.text))) { context.add_class(validity.VALID); return; } context.add_class(validity.NOTVALID); this._image.set_tooltip_text(_notValidMsg); } get text() { if (!this._entry) return ''; return this._entry.get_text(); } set text(text) { if (this.text === text) return; this._entry.set_text(text); this._update(); this._validate(); } get mode() { return this._mode; } set mode(value) { const context = this.get_style_context(); if (context.has_class(mode.READONLY)) context.remove_class(mode.READONLY); else if (context.has_class(mode.READWRITE)) context.remove_class(mode.READWRITE); else if (context.has_class(mode.CREATE)) context.remove_class(mode.CREATE); if (value === mode.READONLY) context.add_class(mode.READONLY); else if (value === mode.READWRITE) context.add_class(mode.READWRITE); else if (value === mode.CREATE) context.add_class(mode.CREATE); if (this._mode === value) return; this._mode = value; this.notify('mode'); } get status() { return this._statusIcon.status; } set status(status) { this._statusIcon.status = status; } }); flatseal-2.3.0/src/widgets/pathRow.ui000066400000000000000000000027471467660615300175570ustar00rootroot00000000000000 store True True flatseal-2.3.0/src/widgets/pathsViewer.js000066400000000000000000000065721467660615300204330ustar00rootroot00000000000000/* exported FlatsealPathsViewer */ /* pathsViewer.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk} = imports.gi; const {FlatsealOverrideStatus} = imports.models.overrideStatus; const _propFlags = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; var FlatsealPathsViewer = GObject.registerClass({ GTypeName: 'FlatsealPathsViewer', Template: 'resource:///com/github/tchx84/Flatseal/widgets/pathsViewer.ui', Properties: { text: GObject.ParamSpec.string( 'text', 'text', 'text', _propFlags, ''), status: GObject.ParamSpec.string( 'status', 'status', 'status', _propFlags, FlatsealOverrideStatus.ORIGINAL), }, }, class FlatsealPathsViewer extends Gtk.Box { _init(serializeFunc, deserializeFunc, rowClass) { this._serializeFunc = serializeFunc; this._deserializeFunc = deserializeFunc; this._status = FlatsealOverrideStatus.ORIGINAL; super._init({}); this._rowClass = rowClass; } _changed() { this.notify('text'); } _remove(row) { this.remove(row); if (this.get_first_child() === null) this.visible = false; this._changed(); } _update(text) { for (const row of Array.from(this)) this.remove(row); this.visible = false; const paths = this._deserializeFunc(text); paths.forEach(path => { if (path.length === 0) return; this.add(path); }); this._updateStatus(); } _updateStatus() { const statuses = this._status .split(';') .filter(s => s.length !== 0); const rows = Array.from(this).reverse(); /* if it's still out of sync, bail out */ if (statuses.length !== rows.length) return; rows.forEach((row, index) => { row.status = statuses[index]; }); } set text(text) { if (text === '') { this._update(text); return; } this._update(text); this.notify('text'); } get text() { return this._serializeFunc(Array.from(this) .map(row => row.text) .reverse(), ); } set status(status) { this._status = status; this._updateStatus(); } get status() { return this._status; } add(path) { const row = new this._rowClass(); row.text = path; row.connect('remove-requested', this._remove.bind(this, row)); row.connect('notify::text', this._changed.bind(this)); this.prepend(row); this.visible = true; } }); flatseal-2.3.0/src/widgets/pathsViewer.ui000066400000000000000000000003521467660615300204220ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/permissionEntryRow.js000066400000000000000000000045751467660615300220350ustar00rootroot00000000000000/* exported FlatsealPermissionEntryRow */ /* permissionEntryRow.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Adw} = imports.gi; const {FlatsealPathsViewer} = imports.widgets.pathsViewer; var FlatsealPermissionEntryRow = GObject.registerClass({ GTypeName: 'FlatsealPermissionEntryRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/permissionEntryRow.ui', InternalChildren: [ 'description', 'permission', 'box', 'button', ], }, class FlatsealpermissionEntryRow extends Adw.PreferencesRow { _init(description, permission, content, serializeFunc, deserializeFunc, rowClass, iconName) { super._init({}); this._description.set_text(description); this._permission.set_text(permission); this._content = new FlatsealPathsViewer(serializeFunc, deserializeFunc, rowClass); this._content.text = content; this._box.append(this._content); this._content.bind_property('visible', this._box, 'visible', GObject.BindingFlags.SYNC_CREATE); this._button.icon_name = iconName; this._button.connect('clicked', this._add.bind(this)); this.connect('notify::sensitive', this._update.bind(this)); } _add() { this._content.add(''); } _update() { if (this.sensitive === false) this.set_tooltip_text(_('Not supported by the installed version of Flatpak')); else this.set_tooltip_text(''); } get content() { return this._content; } get status() { return this._content; } get supported() { return this.sensitive; } set supported(supported) { this.sensitive = supported; this._update(); } }); flatseal-2.3.0/src/widgets/permissionEntryRow.ui000066400000000000000000000054461467660615300220340ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/permissionPortalRow.js000066400000000000000000000077531467660615300221760ustar00rootroot00000000000000/* exported FlatsealPermissionPortalRow */ /* permissionPortalRow.js * * Copyright 2021 Martin Abente Lahaye * * 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 . */ const {GLib, GObject, Adw} = imports.gi; const {getDefault, FlatpakPortalState} = imports.models.portals; const _propFlags = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; var FlatsealPermissionPortalRow = GObject.registerClass({ GTypeName: 'FlatsealPermissionPortalRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/permissionPortalRow.ui', InternalChildren: ['stateSwitch', 'unsetButton'], Properties: { state: GObject.ParamSpec.int( 'state', 'state', 'state', _propFlags, FlatpakPortalState.UNKNOWN, FlatpakPortalState.ALLOWED, FlatpakPortalState.UNKNOWN), }, }, class FlatsealPermissionPortalRow extends Adw.ActionRow { _init(description, permission, content, table, id) { super._init({}); this.set_title(description); this.set_subtitle(permission); this._state = content; this._table = table; this._id = id; this._portals = getDefault(); this._unsetButton.connect('clicked', this._unsetClicked.bind(this)); this._stateHandlerId = this._stateSwitch.connect('state-set', this._stateSwitched.bind(this)); } _stateSwitched() { if (this._stateSwitch.active) this._state = FlatpakPortalState.ALLOWED; else this._state = FlatpakPortalState.DISALLOWED; this._updateWidget(); this.notify('state'); } _unsetClicked() { this._state = FlatpakPortalState.UNSET; this._updateWidget(); this.notify('state'); } _updateWidget() { GObject.signal_handler_block(this._stateSwitch, this._stateHandlerId); if (this._state === FlatpakPortalState.UNSUPPORTED) { this._stateSwitch.active = false; this._unsetButton.visible = false; this.sensitive = false; this.set_tooltip_text(this._portals.getUnsupportedReason(this._table, this._id)); } else if (this._state === FlatpakPortalState.UNSET) { this._stateSwitch.active = false; this._unsetButton.visible = false; this.sensitive = true; this.set_tooltip_text(''); } else if (this._state === FlatpakPortalState.DISALLOWED) { this._stateSwitch.active = false; this._unsetButton.visible = true; this.sensitive = true; this.set_tooltip_text(''); } else if (this._state === FlatpakPortalState.ALLOWED) { this._stateSwitch.active = true; this._unsetButton.visible = true; this.sensitive = true; this.set_tooltip_text(''); } GObject.signal_handler_unblock(this._stateSwitch, this._stateHandlerId); } get content() { return this; } set state(value) { if (value === this._state || typeof this._state === 'undefined') return; this._state = value; GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, this._updateWidget.bind(this)); } get state() { return this._state; } get supported() { return this.sensitive; } set supported(supported) { this.sensitive = supported; this._updateWidget(); } }); flatseal-2.3.0/src/widgets/permissionPortalRow.ui000066400000000000000000000016371467660615300221720ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/permissionSwitchRow.js000066400000000000000000000037621467660615300221720ustar00rootroot00000000000000/* exported FlatsealPermissionSwitchRow */ /* permissionSwitchRow.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Adw} = imports.gi; const {FlatsealOverrideStatusIcon} = imports.widgets.overrideStatusIcon; var FlatsealPermissionSwitchRow = GObject.registerClass({ GTypeName: 'FlatsealPermissionSwitchRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/permissionSwitchRow.ui', InternalChildren: ['content', 'statusBox'], }, class FlatsealPermissionSwitchRow extends Adw.ActionRow { _init(description, permission, content) { super._init({}); this.set_title(description); this.set_subtitle(permission); this._content.set_active(content); this.connect('notify::sensitive', this._update.bind(this)); this._statusIcon = new FlatsealOverrideStatusIcon(); this._statusBox.append(this._statusIcon); } _update() { if (this.sensitive === false) this.set_tooltip_text(_('Not supported by the installed version of Flatpak')); else this.set_tooltip_text(''); } get content() { return this._content; } get status() { return this._statusIcon; } get supported() { return this.sensitive; } set supported(supported) { this.sensitive = supported; this._update(); } }); flatseal-2.3.0/src/widgets/permissionSwitchRow.ui000066400000000000000000000010211467660615300221550ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/relativePathRow.js000066400000000000000000000065161467660615300212500ustar00rootroot00000000000000/* exported FlatsealRelativePathRow */ /* relativePathRow.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk} = imports.gi; const {persistent} = imports.models; const {FlatsealOverrideStatusIcon} = imports.widgets.overrideStatusIcon; const _propFlags = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; var validity = { VALID: 'valid', NOTVALID: 'not-valid', }; const _notValidMsg = _('This is not a valid option'); var FlatsealRelativePathRow = GObject.registerClass({ GTypeName: 'FlatsealRelativePathRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/relativePathRow.ui', InternalChildren: ['entry', 'button', 'image', 'statusBox'], Properties: { text: GObject.ParamSpec.string( 'text', 'text', 'text', _propFlags, ''), }, Signals: { 'remove-requested': {}, }, }, class FlatsealRelativePathRow extends Gtk.Box { _init() { super._init({}); this._setup(); } _setup() { this._expression = new RegExp(/^[^\n]*$/); this._entry.connect('notify::text', this._changed.bind(this)); this._button.connect('clicked', this._remove.bind(this)); this._statusIcon = new FlatsealOverrideStatusIcon(); this._statusBox.append(this._statusIcon); this._validate(); } _remove() { this.emit('remove-requested'); } _changed() { this._update(); this._validate(); this.notify('text'); } _update() { const model = persistent.getDefault(); this.sensitive = !model.isOriginal(this.text); let tooltip = ''; if (!this.sensitive) tooltip = _('Default paths can\'t be removed'); this.set_tooltip_text(tooltip); } _validate() { const context = this.get_style_context(); if (context.has_class(validity.VALID)) context.remove_class(validity.VALID); else if (context.has_class(validity.NOTVALID)) context.remove_class(validity.NOTVALID); if (this._expression.test(this.text)) { context.add_class(validity.VALID); this._image.set_tooltip_text(''); } else { context.add_class(validity.NOTVALID); this._image.set_tooltip_text(_notValidMsg); } } get text() { if (!this._entry) return ''; return this._entry.get_text(); } set text(text) { if (this.text === text) return; this._entry.set_text(text); } get status() { return this._statusIcon.status; } set status(status) { this._statusIcon.status = status; } }); flatseal-2.3.0/src/widgets/relativePathRow.ui000066400000000000000000000022641467660615300212450ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/resetButton.js000066400000000000000000000044021467660615300204360ustar00rootroot00000000000000/* exported FlatsealResetButton */ /* resetButton.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk, Adw} = imports.gi; var FlatsealResetButton = GObject.registerClass({ GTypeName: 'FlatsealResetButton', }, class FlatsealResetButton extends Gtk.Button { _init(permissions) { super._init(); this._setup(permissions); } /* XXX Can't move this a .ui file for some reason */ _setup(permissions) { this._permissions = permissions; this._permissions.connect('changed', this._update.bind(this)); this.label = _('_Reset'); this.use_underline = true; this.sensitive = false; this.add_css_class('reset-button'); this.connect('clicked', this._clicked.bind(this)); } _clicked() { this._permissions.reset(); } _update(widget, overriden, unsupported) { this.sensitive = overriden; if (unsupported) { const content = new Adw.ButtonContent(); content.icon_name = 'dialog-warning-symbolic'; content.label = _('_Reset'); content.use_underline = true; this.set_child(content); /* XXX this makes the button look very inconsistent */ this.remove_css_class('image-text-button'); } else { this.label = _('_Reset'); } let text = _('No changes made to this application'); if (overriden) text = _('Reset this application permissions'); if (unsupported) text += _(', including changes not made with Flatseal'); this.set_tooltip_text(text); } }); flatseal-2.3.0/src/widgets/shortcutsWindow.js000066400000000000000000000020211467660615300213410ustar00rootroot00000000000000/* exported FlatsealShortcutsWindow */ /* shortcutsWindow.js * * Copyright 2021 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk} = imports.gi; var FlatsealShortcutsWindow = GObject.registerClass({ GTypeName: 'FlatsealShortcutsWindow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/shortcutsWindow.ui', }, class FlatsealShortcutsWindow extends Gtk.ShortcutsWindow { }); flatseal-2.3.0/src/widgets/shortcutsWindow.ui000066400000000000000000000115201467660615300213460ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/variableRow.js000066400000000000000000000060161467660615300204000ustar00rootroot00000000000000/* exported FlatsealVariableRow */ /* variableRow.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk} = imports.gi; const {FlatsealOverrideStatusIcon} = imports.widgets.overrideStatusIcon; const {VAR_REGEXP} = imports.models.variables; const _propFlags = GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT; var validity = { VALID: 'valid', NOTVALID: 'not-valid', }; const _notValidMsg = _('This is not a valid option'); var FlatsealVariableRow = GObject.registerClass({ GTypeName: 'FlatsealVariableRow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/variableRow.ui', InternalChildren: ['entry', 'button', 'image', 'statusBox'], Properties: { text: GObject.ParamSpec.string( 'text', 'text', 'text', _propFlags, ''), }, Signals: { 'remove-requested': {}, }, }, class FlatsealVariableRow extends Gtk.Box { _init() { super._init({}); this._setup(); } _setup() { this._expression = new RegExp(VAR_REGEXP); this._entry.connect('notify::text', this._changed.bind(this)); this._button.connect('clicked', this._remove.bind(this)); this._statusIcon = new FlatsealOverrideStatusIcon(); this._statusBox.append(this._statusIcon); this._validate(); } _remove() { this.emit('remove-requested'); } _changed() { this._validate(); this.notify('text'); } _validate() { const context = this.get_style_context(); if (context.has_class(validity.VALID)) context.remove_class(validity.VALID); else if (context.has_class(validity.NOTVALID)) context.remove_class(validity.NOTVALID); if (this._expression.test(this.text)) { context.add_class(validity.VALID); this._image.set_tooltip_text(''); } else { context.add_class(validity.NOTVALID); this._image.set_tooltip_text(_notValidMsg); } } get text() { if (!this._entry) return ''; return this._entry.get_text(); } set text(text) { if (this.text === text) return; this._entry.set_text(text); } get status() { return this._statusIcon.status; } set status(status) { this._statusIcon.status = status; } }); flatseal-2.3.0/src/widgets/variableRow.ui000066400000000000000000000021441467660615300203770ustar00rootroot00000000000000 flatseal-2.3.0/src/widgets/window.js000066400000000000000000000346321467660615300174370ustar00rootroot00000000000000/* exported FlatsealWindow */ /* window.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {GObject, Gtk, Adw} = imports.gi; const {applications, permissions} = imports.models; const {FlatsealAppInfoViewer} = imports.widgets.appInfoViewer; const {FlatsealGlobalInfoViewer} = imports.widgets.globalInfoViewer; const {FlatsealApplicationRow} = imports.widgets.applicationRow; const {FlatsealGlobalRow} = imports.widgets.globalRow; const {FlatsealPermissionEntryRow} = imports.widgets.permissionEntryRow; const {FlatsealPermissionPortalRow} = imports.widgets.permissionPortalRow; const {FlatsealPermissionSwitchRow} = imports.widgets.permissionSwitchRow; const {FlatsealResetButton} = imports.widgets.resetButton; const {FlatsealDetailsButton} = imports.widgets.detailsButton; const {FlatsealPathRow} = imports.widgets.pathRow; const {FlatsealRelativePathRow} = imports.widgets.relativePathRow; const {FlatsealVariableRow} = imports.widgets.variableRow; const {FlatsealBusNameRow} = imports.widgets.busNameRow; const {FlatsealSettingsModel} = imports.models.settings; const {isGlobalOverride} = imports.models.globalModel; const _bindFlags = GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE; const _bindReadFlags = GObject.BindingFlags.SYNC_CREATE; const menuResource = '/com/github/tchx84/Flatseal/widgets/menu.ui'; var FlatsealWindow = GObject.registerClass({ GTypeName: 'FlatsealWindow', Template: 'resource:///com/github/tchx84/Flatseal/widgets/window.ui', InternalChildren: [ 'actionBar', 'appInfoGroup', 'applicationsToastOverlay', 'applicationsSearchButton', 'applicationsSearchBar', 'applicationsSearchEntry', 'applicationsListBox', 'applicationsHeaderBar', 'permissionsHeaderBar', 'permissionsStack', 'permissionsBox', 'startHeaderBox', 'endHeaderBox', 'startActionBox', 'endActionBox', 'menuButton', 'contentLeaflet', 'permissionsTitle', 'toastOverlay', ], }, class FlatsealWindow extends Adw.ApplicationWindow { _init(application) { super._init({application}); this._setup(); } _setup() { const builder = Gtk.Builder.new_from_resource(menuResource); this._menuButton.set_menu_model(builder.get_object('menu')); this._settings = new FlatsealSettingsModel(); this._settings.restoreWindowState(this); this._permissions = permissions.getDefault(); this._applications = applications.getDefault(); this._detailsHeaderButton = new FlatsealDetailsButton(this._permissions); this._startHeaderBox.append(this._detailsHeaderButton); this._resetHeaderButton = new FlatsealResetButton(this._permissions); this._endHeaderBox.append(this._resetHeaderButton); this._detailsActionButton = new FlatsealDetailsButton(this._permissions); this._startActionBox.append(this._detailsActionButton); this._resetActionButton = new FlatsealResetButton(this._permissions); this._endActionBox.append(this._resetActionButton); this._toast = new Adw.Toast(); this._toast.title = _('Permissions have been reset'); this._toast.button_label = _('_Undo'); this._toast.timeout = 3; this._toast.connect('button-clicked', this._undoReset.bind(this)); this._resetHandlerId = this._permissions.connect('reset', this._showToast.bind(this)); this._failedToast = new Adw.Toast(); this._failedToast.title = _('Cannot load overrides due to incorrect contents'); this._failedToast.button_label = _('_Reset'); this._failedToast.timeout = null; this._failedToast.connect('button-clicked', this._doReset.bind(this)); this._permissions.connect('failed', this._showFailedToast.bind(this)); this._applicationsToast = new Adw.Toast(); this._applicationsToast.title = _('Refreshed due to changes in Flatpak installations'); this._applicationsToast.timeout = null; this._applications.connect('changed', this._showApplicationsToast.bind(this)); this._activatedRow = null; this._contentLeaflet.connect('notify::collapsed', this._updateSelection.bind(this)); this._updateSelection(); this._applicationsListBox.set_filter_func(this._filter.bind(this)); this._applicationsListBox.set_sort_func(this._sort.bind(this)); this._applicationsListBox.connect('row-activated', this._activateApplication.bind(this)); this._applicationsSearchEntry.connect('activate', this._selectSearch.bind(this)); this._applicationsSearchEntry.connect('search-changed', this._resetSearch.bind(this)); this._applicationsSearchButton.bind_property( 'active', this._applicationsSearchBar, 'search-mode-enabled', _bindFlags); this._setupApplications(); this._setupPermissions(); this._applicationsSearchBar.set_key_capture_widget(this.root); /* Only after the UI is setup */ if (this._activatedRow !== null) this._activateApplication(this._applicationsListBox, this._activatedRow); } _setupApplications() { for (const row of Array.from(this._applicationsListBox)) { if (row instanceof Adw.ActionRow) this._applicationsListBox.remove(row); } /* Find all available applications */ const allApplications = this._applications.getAll(); if (allApplications.length === 0) { this._contentLeaflet.show_content = false; this._permissionsStack.visibleChildName = 'withNoPermissionsPage'; return; } this._contentLeaflet.show_content = true; this._permissionsStack.visibleChildName = 'withPermissionsPage'; /* Add rows for every application */ const iconTheme = Gtk.IconTheme.get_for_display(this.get_display()); allApplications.forEach(app => { iconTheme.add_search_path(app.appThemePath); const row = new FlatsealApplicationRow(app.appId, app.appName, app.appIconName); this._applicationsListBox.append(row); if (app.appId === this._settings.getSelectedAppId()) this._activatedRow = row; }); /* Add row for global overrides */ this._globalRow = new FlatsealGlobalRow(); this._applicationsListBox.append(this._globalRow); /* Select after the list has been sorted */ if (this._activatedRow === null) this._activatedRow = this._applicationsListBox.get_row_at_index(1); } _setupPermissions() { const allPermissions = this._permissions.getAll(); if (allPermissions.length === 0) return; /* Set up applications information viewer */ this._appInfoViewer = new FlatsealAppInfoViewer(); this._appInfoGroup.add(this._appInfoViewer); this._contentLeaflet.bind_property( 'collapsed', this._appInfoViewer, 'compact', _bindReadFlags); this._globalInfoViewer = new FlatsealGlobalInfoViewer(); this._appInfoGroup.add(this._globalInfoViewer); this._contentLeaflet.bind_property( 'collapsed', this._globalInfoViewer, 'compact', _bindReadFlags); let lastGroup = ''; let lastPrefsGroup; allPermissions.forEach(p => { let row; let property = 'text'; if (p.type === 'path') { row = new FlatsealPermissionEntryRow( p.description, p.permission, p.value, p.serializeFunc, p.deserializeFunc, FlatsealPathRow, 'folder-new-symbolic'); } else if (p.type === 'relativePath') { row = new FlatsealPermissionEntryRow( p.description, p.permission, p.value, p.serializeFunc, p.deserializeFunc, FlatsealRelativePathRow, 'folder-new-symbolic'); } else if (p.type === 'variable') { row = new FlatsealPermissionEntryRow( p.description, p.permission, p.value, p.serializeFunc, p.deserializeFunc, FlatsealVariableRow, 'list-add-symbolic'); } else if (p.type === 'bus') { row = new FlatsealPermissionEntryRow( p.description, p.permission, p.value, p.serializeFunc, p.deserializeFunc, FlatsealBusNameRow, 'list-add-symbolic'); } else if (p.type === 'portal') { property = 'state'; row = new FlatsealPermissionPortalRow( p.description, p.permission, p.value, p.portalTable, p.portalId); } else { property = 'active'; row = new FlatsealPermissionSwitchRow( p.description, p.permission, p.value); } const context = row.get_style_context(); context.add_class(p.groupStyle); if (p.groupStyle !== lastGroup) { const groupRow = new Adw.PreferencesGroup(); groupRow.set_title(p.groupTitle); groupRow.set_description(p.groupDescription); this._permissionsBox.add(groupRow); lastGroup = p.groupStyle; lastPrefsGroup = groupRow; } row.supported = p.supported; lastPrefsGroup.add(row); this._portalsGroup = lastPrefsGroup; this._permissions.bind_property(p.property, row.content, property, _bindFlags); if (!row.status) return; this._permissions.bind_property(p.statusProperty, row.status, 'status', _bindFlags); }); } _shutdown() { this._permissions.shutdown(); this._applications.shutdown(); } _activateApplication(listBox, row) { this._activatedRow = row; this._updatePermissions(row); this._applicationsListBox.select_row(row); this._contentLeaflet.show_content = true; } _updatePermissionsPane(row) { if (row === null) { this._permissionsTitle.title = ''; this._resetActionButton.sensitive = false; this._resetHeaderButton.sensitive = false; this._detailsHeaderButton.disable(); this._detailsActionButton.disable(); } else if (isGlobalOverride(row.appId)) { this._permissionsTitle.title = row.appName; this._appInfoViewer.visible = false; this._globalInfoViewer.visible = true; this._portalsGroup.visible = false; this._detailsHeaderButton.disable(); this._detailsActionButton.disable(); } else { this._permissionsTitle.title = row.appName; this._appInfoViewer.appId = row.appId; this._appInfoViewer.visible = true; this._globalInfoViewer.visible = false; this._portalsGroup.visible = true; this._detailsHeaderButton.enable(); this._detailsActionButton.enable(); } } _updatePermissions(row) { this._failedToast.dismiss(); this._updatePermissionsPane(row); const appId = row ? row.appId : ''; this._permissions.appId = appId; this._settings.setSelectedAppId(appId); this._toast.dismiss(); } _updateSelection() { const mode = this._contentLeaflet.collapsed ? Gtk.SelectionMode.NONE : Gtk.SelectionMode.BROWSE; this._applicationsListBox.selection_mode = mode; if (this._contentLeaflet.collapsed) return; if (this._activatedRow === null) return; this._applicationsListBox.select_row(this._activatedRow); } _filter(row) { const text = this._applicationsSearchEntry.get_text(); if (text.length === 0) return true; const subString = text.toLowerCase(); return ( row.appId.toLowerCase().includes(subString) || row.appName.toLowerCase().includes(subString) ); } _sort(row1, row2) { // eslint-disable-line class-methods-use-this if (isGlobalOverride(row1.appId) || isGlobalOverride(row2.appId)) return 1; const name1 = row1.appName.toLowerCase(); const name2 = row2.appName.toLowerCase(); if (name1 === name2) return 0; if (name1 < name2) return -1; return 1; } _selectSearch() { const row = this._applicationsListBox.get_row_at_y(0); if (row !== null) row.grab_focus(); } _resetSearch() { this._applicationsListBox.invalidate_filter(); } _showToast() { this._toastOverlay.add_toast(this._toast); } _showFailedToast() { this._toastOverlay.add_toast(this._failedToast); } _showApplicationsToast() { this._setupApplications(); this._applicationsToastOverlay.add_toast(this._applicationsToast); } _doReset() { GObject.signal_handler_block(this._permissions, this._resetHandlerId); this._permissions.reset(); GObject.signal_handler_unblock(this._permissions, this._resetHandlerId); } _undoReset() { this._permissions.undo(); } vfunc_close_request() { this._settings.saveWindowState(this); this._shutdown(); return super.vfunc_close_request(); } }); flatseal-2.3.0/src/widgets/window.ui000066400000000000000000000201541467660615300174320ustar00rootroot00000000000000 flatseal-2.3.0/tests/000077500000000000000000000000001467660615300144675ustar00rootroot00000000000000flatseal-2.3.0/tests/content/000077500000000000000000000000001467660615300161415ustar00rootroot00000000000000flatseal-2.3.0/tests/content/.flatpak-info000066400000000000000000000000371467660615300205150ustar00rootroot00000000000000[Instance] flatpak-version=1.0 flatseal-2.3.0/tests/content/.flatpak-info.new000066400000000000000000000000401467660615300212770ustar00rootroot00000000000000[Instance] flatpak-version=3000 flatseal-2.3.0/tests/content/.flatpak-info.old000066400000000000000000000000411467660615300212650ustar00rootroot00000000000000[Instance] flatpak-version=0.0.1 flatseal-2.3.0/tests/content/custom/000077500000000000000000000000001467660615300174535ustar00rootroot00000000000000flatseal-2.3.0/tests/content/custom/app/000077500000000000000000000000001467660615300202335ustar00rootroot00000000000000flatseal-2.3.0/tests/content/custom/app/com.test.Extra/000077500000000000000000000000001467660615300230515ustar00rootroot00000000000000flatseal-2.3.0/tests/content/custom/app/com.test.Extra/current/000077500000000000000000000000001467660615300245335ustar00rootroot00000000000000flatseal-2.3.0/tests/content/custom/app/com.test.Extra/current/active/000077500000000000000000000000001467660615300260065ustar00rootroot00000000000000flatseal-2.3.0/tests/content/custom/app/com.test.Extra/current/active/metadata000066400000000000000000000000251467660615300275060ustar00rootroot00000000000000[Context] shared=ipc flatseal-2.3.0/tests/content/extra/000077500000000000000000000000001467660615300172645ustar00rootroot00000000000000flatseal-2.3.0/tests/content/extra/app/000077500000000000000000000000001467660615300200445ustar00rootroot00000000000000flatseal-2.3.0/tests/content/extra/app/com.test.Extra/000077500000000000000000000000001467660615300226625ustar00rootroot00000000000000flatseal-2.3.0/tests/content/extra/app/com.test.Extra/current/000077500000000000000000000000001467660615300243445ustar00rootroot00000000000000flatseal-2.3.0/tests/content/extra/app/com.test.Extra/current/active/000077500000000000000000000000001467660615300256175ustar00rootroot00000000000000flatseal-2.3.0/tests/content/extra/app/com.test.Extra/current/active/metadata000066400000000000000000000000311467660615300273140ustar00rootroot00000000000000[Context] shared=network flatseal-2.3.0/tests/content/global/000077500000000000000000000000001467660615300174015ustar00rootroot00000000000000flatseal-2.3.0/tests/content/global/flatpak/000077500000000000000000000000001467660615300210235ustar00rootroot00000000000000flatseal-2.3.0/tests/content/global/flatpak/overrides/000077500000000000000000000000001467660615300230255ustar00rootroot00000000000000flatseal-2.3.0/tests/content/global/flatpak/overrides/com.test.GlobalRestored000066400000000000000000000004001467660615300274050ustar00rootroot00000000000000[Context] sockets=x11;!wayland persistent=.test3 filesystems=!~/test2;!~/test3;~/test4 [Environment] TEST1= TEST2=override TEST4=override [Session Bus Policy] org.test.Service-3=none org.test.Service-4=talk org.test.Service-2=none org.test.Service-5=own flatseal-2.3.0/tests/content/global/flatpak/overrides/global000066400000000000000000000003311467660615300242050ustar00rootroot00000000000000[Context] shared=unsupported sockets=!x11;wayland; persistent=.test2 filesystems=~/test0;!~/test1;~/test3 [Environment] TEST1=global TEST3=global [Session Bus Policy] org.test.Service-1=none org.test.Service-3=talk flatseal-2.3.0/tests/content/globalNegated/000077500000000000000000000000001467660615300206715ustar00rootroot00000000000000flatseal-2.3.0/tests/content/globalNegated/flatpak/000077500000000000000000000000001467660615300223135ustar00rootroot00000000000000flatseal-2.3.0/tests/content/globalNegated/flatpak/overrides/000077500000000000000000000000001467660615300243155ustar00rootroot00000000000000flatseal-2.3.0/tests/content/globalNegated/flatpak/overrides/global000066400000000000000000000001741467660615300255020ustar00rootroot00000000000000[Context] shared=unsupported sockets=!x11 filesystems=!~/test [Environment] TEST= [Session Bus Policy] org.test.Test=none flatseal-2.3.0/tests/content/globalResetMode/000077500000000000000000000000001467660615300212115ustar00rootroot00000000000000flatseal-2.3.0/tests/content/globalResetMode/flatpak/000077500000000000000000000000001467660615300226335ustar00rootroot00000000000000flatseal-2.3.0/tests/content/globalResetMode/flatpak/overrides/000077500000000000000000000000001467660615300246355ustar00rootroot00000000000000flatseal-2.3.0/tests/content/globalResetMode/flatpak/overrides/global000066400000000000000000000000411467660615300260130ustar00rootroot00000000000000[Context] filesystems=!host:resetflatseal-2.3.0/tests/content/installations.d/000077500000000000000000000000001467660615300212475ustar00rootroot00000000000000flatseal-2.3.0/tests/content/installations.d/extra.conf000066400000000000000000000003331467660615300232400ustar00rootroot00000000000000[Installation "extra"] Path=../tests/content/extra/ DisplayName=Extra Installation StorageType=sdcard [Installation "custom"] Path=../tests/content/custom/ DisplayName=Custom Installation StorageType=sdcard Priority=2 flatseal-2.3.0/tests/content/statuses/000077500000000000000000000000001467660615300200145ustar00rootroot00000000000000flatseal-2.3.0/tests/content/statuses/flatpak/000077500000000000000000000000001467660615300214365ustar00rootroot00000000000000flatseal-2.3.0/tests/content/statuses/flatpak/overrides/000077500000000000000000000000001467660615300234405ustar00rootroot00000000000000flatseal-2.3.0/tests/content/statuses/flatpak/overrides/com.test.Statuses000066400000000000000000000002371467660615300267330ustar00rootroot00000000000000[Context] sockets=x11 persistent=.test3 filesystems=~/test3 [Environment] TEST2=override [Session Bus Policy] org.test.Service-5=talk org.test.Service-6=own flatseal-2.3.0/tests/content/statuses/flatpak/overrides/global000066400000000000000000000002721467660615300246240ustar00rootroot00000000000000[Context] shared=unsupported sockets=!x11;wayland; persistent=.test2 filesystems=~/test2 [Environment] TEST1=global [Session Bus Policy] org.test.Service-3=talk org.test.Service-4=own flatseal-2.3.0/tests/content/system/000077500000000000000000000000001467660615300174655ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/000077500000000000000000000000001467660615300211075ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/000077500000000000000000000000001467660615300216675ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.BaseApp/000077500000000000000000000000001467660615300247355ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.BaseApp/current/000077500000000000000000000000001467660615300264175ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.BaseApp/current/active/000077500000000000000000000000001467660615300276725ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.BaseApp/current/active/metadata000066400000000000000000000000001467660615300313630ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Basic/000077500000000000000000000000001467660615300244435ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Basic/current/000077500000000000000000000000001467660615300261255ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Basic/current/active/000077500000000000000000000000001467660615300274005ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Basic/current/active/metadata000066400000000000000000000007221467660615300311040ustar00rootroot00000000000000[Context] shared=network;ipc; sockets=x11;fallback-x11;wayland;pulseaudio;system-bus;session-bus;ssh-auth;pcsc;cups;gpg-agent;inherit-wayland-socket; devices=dri;input;kvm;shm;all; features=bluetooth;devel;multiarch;canbus;per-app-dev-shm; filesystems=host;host-os;host-etc;home;~/test; persistent=.test; [Environment] TEST=yes [Session Bus Policy] org.test.Service-1=talk org.test.Service-2=own [System Bus Policy] org.test.Service-3=talk org.test.Service-4=own flatseal-2.3.0/tests/content/system/flatpak/app/com.test.BasicNegated/000077500000000000000000000000001467660615300257335ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.BasicNegated/current/000077500000000000000000000000001467660615300274155ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.BasicNegated/current/active/000077500000000000000000000000001467660615300306705ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.BasicNegated/current/active/metadata000066400000000000000000000007561467660615300324030ustar00rootroot00000000000000[Context] shared=!network;!ipc; sockets=!x11;!fallback-x11;!wayland;!pulseaudio;!system-bus;!session-bus;!ssh-auth;!pcsc;!cups;!gpg-agent;!inherit-wayland-socket; devices=!dri;!input;!kvm;!shm;!all; features=!bluetooth;!devel;!multiarch;!canbus;!per-app-dev-shm; filesystems=!host;!host-os;!host-etc;!home;!~/test; persistent=tset. [Environment] TEST=no [Session Bus Policy] org.test.Service-1=none org.test.Service-2=none [System Bus Policy] org.test.Service-3=none org.test.Service-4=none flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Bus/000077500000000000000000000000001467660615300241535ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Bus/current/000077500000000000000000000000001467660615300256355ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Bus/current/active/000077500000000000000000000000001467660615300271105ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Bus/current/active/metadata000066400000000000000000000001041467660615300306060ustar00rootroot00000000000000[Session Bus Policy] org.test.Service-1=talk org.test.Service-2=own flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Environment/000077500000000000000000000000001467660615300257265ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Environment/current/000077500000000000000000000000001467660615300274105ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Environment/current/active/000077500000000000000000000000001467660615300306635ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Environment/current/active/metadata000066400000000000000000000000271467660615300323650ustar00rootroot00000000000000[Environment] TEST=yes flatseal-2.3.0/tests/content/system/flatpak/app/com.test.FilesystemWithMode/000077500000000000000000000000001467660615300272075ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.FilesystemWithMode/current/000077500000000000000000000000001467660615300306715ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.FilesystemWithMode/current/active/000077500000000000000000000000001467660615300321445ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.FilesystemWithMode/current/active/metadata000066400000000000000000000000671467660615300336520ustar00rootroot00000000000000[Context] filesystems=host:ro;xdg-documents:ro;home:ro flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Global/000077500000000000000000000000001467660615300246225ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Global/current/000077500000000000000000000000001467660615300263045ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Global/current/active/000077500000000000000000000000001467660615300275575ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Global/current/active/metadata000066400000000000000000000003171467660615300312630ustar00rootroot00000000000000[Context] sockets=x11;!wayland;cups; persistent=.test1 filesystems=!~/test0;~/test1;~/test2; [Environment] TEST1=original TEST2=original [Session Bus Policy] org.test.Service-1=talk org.test.Service-2=own flatseal-2.3.0/tests/content/system/flatpak/app/com.test.GlobalRestored/000077500000000000000000000000001467660615300263325ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.GlobalRestored/current/000077500000000000000000000000001467660615300300145ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.GlobalRestored/current/active/000077500000000000000000000000001467660615300312675ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.GlobalRestored/current/active/metadata000066400000000000000000000003171467660615300327730ustar00rootroot00000000000000[Context] sockets=x11;!wayland;cups; persistent=.test1 filesystems=!~/test0;~/test1;~/test2; [Environment] TEST1=original TEST2=original [Session Bus Policy] org.test.Service-1=talk org.test.Service-2=own flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Increase/000077500000000000000000000000001467660615300251535ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Increase/current/000077500000000000000000000000001467660615300266355ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Increase/current/active/000077500000000000000000000000001467660615300301105ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Increase/current/active/metadata000066400000000000000000000000461467660615300316130ustar00rootroot00000000000000[Context] filesystems=xdg-pictures:ro flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Malformed/000077500000000000000000000000001467660615300253305ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Malformed/current/000077500000000000000000000000001467660615300270125ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Malformed/current/active/000077500000000000000000000000001467660615300302655ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Malformed/current/active/metadata000066400000000000000000000000311467660615300317620ustar00rootroot00000000000000[Context] shared=network;flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Negation/000077500000000000000000000000001467660615300251665ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Negation/current/000077500000000000000000000000001467660615300266505ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Negation/current/active/000077500000000000000000000000001467660615300301235ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Negation/current/active/metadata000066400000000000000000000000551467660615300316260ustar00rootroot00000000000000[Context] filesystems=!~/negative;~/positive flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Old/000077500000000000000000000000001467660615300241405ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Old/current/000077500000000000000000000000001467660615300256225ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Old/current/active/000077500000000000000000000000001467660615300270755ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Old/current/active/metadata000066400000000000000000000000431467660615300305750ustar00rootroot00000000000000[Context] filesystems=xdg-pictures flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Overriden/000077500000000000000000000000001467660615300253575ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Overriden/current/000077500000000000000000000000001467660615300270415ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Overriden/current/active/000077500000000000000000000000001467660615300303145ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Overriden/current/active/metadata000066400000000000000000000003441467660615300320200ustar00rootroot00000000000000[Context] shared=network;ipc; sockets=x11;fallback-x11;wayland;pulseaudio;system-bus;session-bus;ssh-auth;cups;gpg-agent;inherit-wayland-socket; devices=dri;all; features=bluetooth;devel;multiarch; filesystems=host;home;~/test; flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Reduce/000077500000000000000000000000001467660615300246315ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Reduce/current/000077500000000000000000000000001467660615300263135ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Reduce/current/active/000077500000000000000000000000001467660615300275665ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Reduce/current/active/metadata000066400000000000000000000000441467660615300312670ustar00rootroot00000000000000[Context] filesystems=xdg-downloads flatseal-2.3.0/tests/content/system/flatpak/app/com.test.ResetMode/000077500000000000000000000000001467660615300253115ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.ResetMode/current/000077500000000000000000000000001467660615300267735ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.ResetMode/current/active/000077500000000000000000000000001467660615300302465ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.ResetMode/current/active/metadata000066400000000000000000000000331467660615300317450ustar00rootroot00000000000000[Context] filesystems=host;flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Statuses/000077500000000000000000000000001467660615300252355ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Statuses/current/000077500000000000000000000000001467660615300267175ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Statuses/current/active/000077500000000000000000000000001467660615300301725ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Statuses/current/active/metadata000066400000000000000000000003141467660615300316730ustar00rootroot00000000000000[Context] sockets=x11;!wayland;cups; persistent=.test1 filesystems=~/test1 [Environment] TEST0=original TEST1=original TEST2=original [Session Bus Policy] org.test.Service-1=talk org.test.Service-2=own flatseal-2.3.0/tests/content/system/flatpak/app/com.test.TrailingSemicolon/000077500000000000000000000000001467660615300270445ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.TrailingSemicolon/current/000077500000000000000000000000001467660615300305265ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.TrailingSemicolon/current/active/000077500000000000000000000000001467660615300320015ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.TrailingSemicolon/current/active/metadata000066400000000000000000000000611467660615300335010ustar00rootroot00000000000000[Context] shared=network [Environment] TEST=YES flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Unsupported/000077500000000000000000000000001467660615300257525ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Unsupported/current/000077500000000000000000000000001467660615300274345ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Unsupported/current/active/000077500000000000000000000000001467660615300307075ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Unsupported/current/active/metadata000066400000000000000000000001071467660615300324100ustar00rootroot00000000000000[Context] shared=unsupported unsupported=all filesystems=~/unsupported flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Variables/000077500000000000000000000000001467660615300253325ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Variables/current/000077500000000000000000000000001467660615300270145ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Variables/current/active/000077500000000000000000000000001467660615300302675ustar00rootroot00000000000000flatseal-2.3.0/tests/content/system/flatpak/app/com.test.Variables/current/active/metadata000066400000000000000000000000361467660615300317710ustar00rootroot00000000000000[Environment] ENVIRONMENT=set flatseal-2.3.0/tests/content/user/000077500000000000000000000000001467660615300171175ustar00rootroot00000000000000flatseal-2.3.0/tests/content/user/flatpak/000077500000000000000000000000001467660615300205415ustar00rootroot00000000000000flatseal-2.3.0/tests/content/user/flatpak/overrides/000077500000000000000000000000001467660615300225435ustar00rootroot00000000000000flatseal-2.3.0/tests/content/user/flatpak/overrides/com.test.Basic000066400000000000000000000007561467660615300252520ustar00rootroot00000000000000[Context] shared=!network;!ipc; sockets=!x11;!fallback-x11;!wayland;!pulseaudio;!system-bus;!session-bus;!ssh-auth;!pcsc;!cups;!gpg-agent;!inherit-wayland-socket; devices=!dri;!input;!kvm;!shm;!all; features=!bluetooth;!devel;!multiarch;!canbus;!per-app-dev-shm; filesystems=!host;!host-os;!host-etc;!home;!~/test; persistent=tset. [Environment] TEST=no [Session Bus Policy] org.test.Service-1=none org.test.Service-2=none [System Bus Policy] org.test.Service-3=none org.test.Service-4=none flatseal-2.3.0/tests/content/user/flatpak/overrides/com.test.BasicNegated000066400000000000000000000007221467660615300265330ustar00rootroot00000000000000[Context] shared=network;ipc; sockets=x11;fallback-x11;wayland;pulseaudio;system-bus;session-bus;ssh-auth;pcsc;cups;gpg-agent;inherit-wayland-socket; devices=dri;input;kvm;shm;all; features=bluetooth;devel;multiarch;canbus;per-app-dev-shm; filesystems=host;host-os;host-etc;home;~/test; persistent=.test; [Environment] TEST=yes [Session Bus Policy] org.test.Service-1=talk org.test.Service-2=own [System Bus Policy] org.test.Service-3=talk org.test.Service-4=own flatseal-2.3.0/tests/content/user/flatpak/overrides/com.test.FilesystemWithMode000066400000000000000000000000531467660615300300040ustar00rootroot00000000000000[Context] filesystems=!host;!xdg-documents flatseal-2.3.0/tests/content/user/flatpak/overrides/com.test.Malformed000066400000000000000000000000111467660615300261170ustar00rootroot00000000000000malformedflatseal-2.3.0/tests/content/user/flatpak/overrides/com.test.Old000066400000000000000000000000641467660615300247370ustar00rootroot00000000000000[Context] filesystems=xdg-pictures:ro;!xdg-pictures flatseal-2.3.0/tests/content/user/flatpak/overrides/com.test.TrailingSemicolon000066400000000000000000000000541467660615300276420ustar00rootroot00000000000000[Context] shared=ipc; [Environment] TEST=; flatseal-2.3.0/tests/content/user/flatpak/overrides/com.test.Unsupported000066400000000000000000000000601467660615300265450ustar00rootroot00000000000000[Context] shared=unsupported unsupported=always flatseal-2.3.0/tests/content/user/flatpak/overrides/com.test.Variables000066400000000000000000000000331467660615300261250ustar00rootroot00000000000000[Environment] ENVIRONMENT= flatseal-2.3.0/tests/meson.build000066400000000000000000000004411467660615300166300ustar00rootroot00000000000000jasmine = find_program('jasmine', required: false) if jasmine.found() env = environment() env.set('LC_ALL', 'C') tests = join_paths(meson.current_source_dir(), 'src') test('Jasmine tests', jasmine, env: env, args: ['--no-config', '--verbose', '--no-color', tests]) endif flatseal-2.3.0/tests/service.js000066400000000000000000000121441467660615300164670ustar00rootroot00000000000000/* eslint class-methods-use-this:, no-unused-vars: */ /* service.js * * Copyright 2021 Martin Abente Lahaye * * 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 . */ imports.gi.versions.Gtk = '4.0'; const {Gio, GLib, Gtk} = imports.gi; const PermissionsIface = ` `; class MockPermissionsStore { constructor() { this._store = { background: { background: {}, }, notifications: { notification: {}, }, devices: { speakers: {}, microphone: {}, camera: {}, }, location: { location: {}, }, }; this._version = new GLib.Variant('u', 2); this._dbusId = null; this._nameId = Gio.bus_own_name( Gio.BusType.SESSION, 'com.github.tchx84.Flatseal.PermissionStore', Gio.BusNameOwnerFlags.NONE, this._onBusAcquired.bind(this), null, null, ); } _onBusAcquired(connection, name) { const info = Gio.DBusNodeInfo.new_for_xml(PermissionsIface); const activationId = connection.register_object( '/org/freedesktop/impl/portal/PermissionStore', info.interfaces[0], this._onCalled.bind(this), this._onProperty.bind(this), null, ); if (activationId <= 0) throw new Error('activationId is ZERO'); } _onCalled(connection, sender, path, iface, method, params, invocation) { if (method === 'Lookup') { const [table, id] = params.deep_unpack(); if (!(table in this._store) || !(id in this._store[table])) invocation.return_dbus_error('org.freedesktop.portal.Error.NotFound', ''); const data = new GLib.Variant('b', true); const permissions = new GLib.Variant('(a{sas}v)', [this._store[table][id], data]); invocation.return_value(permissions); } else if (method === 'SetPermission') { const [table, create, id, appId, permissions] = params.deep_unpack(); this._store[table][id][appId] = permissions; invocation.return_value(null); } else if (method === 'List') { var ids = []; const [table] = params.deep_unpack(); if (table in this._store) ids = Object.keys(this._store[table]); const value = new GLib.Variant('(as)', [ids]); invocation.return_value(value); } else if (method === 'DeletePermission') { const [table, id, appId] = params.deep_unpack(); if (table in this._store && id in this._store[table] && appId in this._store[table][id]) delete this._store[table][id][appId]; invocation.return_value(null); } else if (method === 'testPartialTable') { delete this._store['devices']['microphone']; invocation.return_value(null); } } _onProperty(connection, sender, path, iface, key) { return this._version; } shutdown() { Gio.bus_unown_name(this._nameId); } } Gtk.init(); const service = new MockPermissionsStore(); const loop = new GLib.MainLoop(null, false); loop.run(); flatseal-2.3.0/tests/src/000077500000000000000000000000001467660615300152565ustar00rootroot00000000000000flatseal-2.3.0/tests/src/testModels.js000066400000000000000000001737311467660615300177530ustar00rootroot00000000000000/* testModels.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {Gio, GLib} = imports.gi; const { setup, update, has, hasOnly, hasInTotal, startService, waitForService, stopService, partialService, getValueFromService, } = imports.utils; setup(); const _totalPermissions = 40; const _basicAppId = 'com.test.Basic'; const _basicNegatedAppId = 'com.test.BasicNegated'; const _oldAppId = 'com.test.Old'; const _reduceAppId = 'com.test.Reduce'; const _increaseAppId = 'com.test.Increase'; const _baseAppId = 'com.test.BaseApp'; const _negationAppId = 'com.test.Negation'; const _unsupportedAppId = 'com.test.Unsupported'; const _overridenAppId = 'com.test.Overriden'; const _extraAppId = 'com.test.Extra'; const _environmentAppId = 'com.test.Environment'; const _busAppId = 'com.test.Bus'; const _variablesAppId = 'com.test.Variables'; const _trailingSemicolonId = 'com.test.TrailingSemicolon'; const _filesystemWithMode = 'com.test.FilesystemWithMode'; const _resetModeId = 'com.test.ResetMode'; const _globalAppId = 'com.test.Global'; const _globalRestoredAppId = 'com.test.GlobalRestored'; const _statusesAppId = 'com.test.Statuses'; const _malformedAppId = 'com.test.Malformed'; const _flatpakInfo = GLib.build_filenamev(['..', 'tests', 'content', '.flatpak-info']); const _flatpakInfoOld = GLib.build_filenamev(['..', 'tests', 'content', '.flatpak-info.old']); const _flatpakInfoNew = GLib.build_filenamev(['..', 'tests', 'content', '.flatpak-info.new']); const _system = GLib.build_filenamev(['..', 'tests', 'content', 'system', 'flatpak']); const _user = GLib.build_filenamev(['..', 'tests', 'content', 'user', 'flatpak']); const _global = GLib.build_filenamev(['..', 'tests', 'content', 'global', 'flatpak']); const _globalNegated = GLib.build_filenamev(['..', 'tests', 'content', 'globalNegated', 'flatpak']); const _globalResetMode = GLib.build_filenamev(['..', 'tests', 'content', 'globalResetMode', 'flatpak']); const _statuses = GLib.build_filenamev(['..', 'tests', 'content', 'statuses', 'flatpak']); const _tmp = GLib.build_filenamev([GLib.DIR_SEPARATOR_S, 'tmp']); const _none = GLib.build_filenamev([GLib.DIR_SEPARATOR_S, 'dev', 'null']); const _overrides = GLib.build_filenamev([_tmp, 'overrides']); const _globalOverride = GLib.build_filenamev([_overrides, 'global']); const _globalNegatedOverride = GLib.build_filenamev([_globalNegated, 'overrides', 'global']); const _globalResetModeOverride = GLib.build_filenamev([_globalResetMode, 'overrides', 'global']); const _basicOverride = GLib.build_filenamev([_overrides, _basicAppId]); const _reduceOverride = GLib.build_filenamev([_overrides, _reduceAppId]); const _increaseOverride = GLib.build_filenamev([_overrides, _increaseAppId]); const _negationOverride = GLib.build_filenamev([_overrides, _negationAppId]); const _unsupportedOverride = GLib.build_filenamev([_overrides, _unsupportedAppId]); const _overridenOverride = GLib.build_filenamev([_overrides, _overridenAppId]); const _environmentOverride = GLib.build_filenamev([_overrides, _environmentAppId]); const _busOverride = GLib.build_filenamev([_overrides, _busAppId]); const _filesystemWithModeOverride = GLib.build_filenamev([_overrides, _filesystemWithMode]); const _resetModeOverride = GLib.build_filenamev([_overrides, _resetModeId]); const _globalWithGlobalOverride = GLib.build_filenamev([_global, 'overrides', _globalAppId]); const _sessionGroup = 'Session Bus Policy'; const _key = 'filesystems'; const _flatpakConfig = GLib.build_filenamev(['..', 'tests', 'content']); describe('Model', function() { var delay, permissionsDefault, applicationsDefault, infoDefault, portalsDefault, portalState; beforeAll(function() { startService(); waitForService(); const {applications, info, permissions, portals} = imports.models; infoDefault = info.getDefault(); portalsDefault = portals.getDefault(); applicationsDefault = applications.getDefault(); permissionsDefault = permissions.getDefault(); delay = permissions.DELAY; portalState = portals.FlatpakPortalState; GLib.unlink(_overridenOverride); GLib.mkdir_with_parents(_overrides, 0o755); }); afterAll(function() { stopService(); }); beforeEach(function() { GLib.setenv('FLATPAK_SYSTEM_DIR', _system, true); GLib.setenv('FLATPAK_USER_DIR', _none, true); GLib.setenv('FLATPAK_INFO_PATH', _flatpakInfo, true); infoDefault.reload(); portalsDefault.reload(); applicationsDefault.reload(); permissionsDefault.reload(); GLib.unlink(_basicOverride); GLib.unlink(_reduceOverride); GLib.unlink(_increaseOverride); GLib.unlink(_negationOverride); GLib.unlink(_unsupportedOverride); GLib.unlink(_environmentOverride); GLib.unlink(_busOverride); GLib.unlink(_filesystemWithModeOverride); GLib.unlink(_resetModeOverride); GLib.unlink(_globalWithGlobalOverride); GLib.unlink(_globalOverride); }); it('loads applications', function() { const appIds = applicationsDefault.getAll().map(a => a.appId); expect(appIds).toContain(_basicAppId); expect(appIds).toContain(_basicNegatedAppId); expect(appIds).toContain(_oldAppId); expect(appIds).toContain(_reduceAppId); expect(appIds).toContain(_increaseAppId); expect(appIds).toContain(_negationAppId); expect(appIds).toContain(_unsupportedAppId); expect(appIds).toContain(_trailingSemicolonId); expect(appIds).toContain(_filesystemWithMode); expect(appIds).toContain(_resetModeId); }); it('ignores BaseApp bundles', function() { const path = GLib.build_filenamev([ _system, 'app', _baseAppId, 'current', 'active', 'metadata', ]); expect(GLib.access(path, 0)).toEqual(0); const appIds = applicationsDefault.getAll().map(a => a.appId); expect(appIds).not.toContain(_baseAppId); }); it('loads permissions', function() { permissionsDefault.appId = _basicAppId; expect(permissionsDefault.shared_network).toBe(true); expect(permissionsDefault.shared_ipc).toBe(true); expect(permissionsDefault.sockets_x11).toBe(true); expect(permissionsDefault.sockets_fallback_x11).toBe(true); expect(permissionsDefault.sockets_wayland).toBe(true); expect(permissionsDefault.sockets_pulseaudio).toBe(true); expect(permissionsDefault.sockets_system_bus).toBe(true); expect(permissionsDefault.sockets_session_bus).toBe(true); expect(permissionsDefault.sockets_ssh_auth).toBe(true); expect(permissionsDefault.sockets_pcsc).toBe(true); expect(permissionsDefault.sockets_cups).toBe(true); expect(permissionsDefault.sockets_gpg_agent).toBe(true); expect(permissionsDefault.sockets_inherit_wayland_socket).toBe(true); expect(permissionsDefault.devices_dri).toBe(true); expect(permissionsDefault.devices_input).toBe(true); expect(permissionsDefault.devices_kvm).toBe(true); expect(permissionsDefault.devices_shm).toBe(true); expect(permissionsDefault.devices_all).toBe(true); expect(permissionsDefault.features_bluetooth).toBe(true); expect(permissionsDefault.features_devel).toBe(true); expect(permissionsDefault.features_multiarch).toBe(true); expect(permissionsDefault.features_canbus).toBe(true); expect(permissionsDefault.features_per_app_dev_shm).toBe(true); expect(permissionsDefault.filesystems_host).toBe(true); expect(permissionsDefault.filesystems_host_os).toBe(true); expect(permissionsDefault.filesystems_host_etc).toBe(true); expect(permissionsDefault.filesystems_home).toBe(true); expect(permissionsDefault.filesystems_other).toEqual('~/test'); expect(permissionsDefault.session_talk).toEqual('org.test.Service-1'); expect(permissionsDefault.session_own).toEqual('org.test.Service-2'); expect(permissionsDefault.system_talk).toEqual('org.test.Service-3'); expect(permissionsDefault.system_own).toEqual('org.test.Service-4'); expect(permissionsDefault.persistent).toEqual('.test'); expect(permissionsDefault.variables).toEqual('TEST=yes'); }); it('loads overrides', function() { GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _basicAppId; expect(permissionsDefault.shared_network).toBe(false); expect(permissionsDefault.shared_ipc).toBe(false); expect(permissionsDefault.sockets_x11).toBe(false); expect(permissionsDefault.sockets_fallback_x11).toBe(false); expect(permissionsDefault.sockets_wayland).toBe(false); expect(permissionsDefault.sockets_pulseaudio).toBe(false); expect(permissionsDefault.sockets_system_bus).toBe(false); expect(permissionsDefault.sockets_session_bus).toBe(false); expect(permissionsDefault.sockets_ssh_auth).toBe(false); expect(permissionsDefault.sockets_pcsc).toBe(false); expect(permissionsDefault.sockets_cups).toBe(false); expect(permissionsDefault.sockets_gpg_agent).toBe(false); expect(permissionsDefault.sockets_inherit_wayland_socket).toBe(false); expect(permissionsDefault.devices_dri).toBe(false); expect(permissionsDefault.devices_input).toBe(false); expect(permissionsDefault.devices_kvm).toBe(false); expect(permissionsDefault.devices_shm).toBe(false); expect(permissionsDefault.devices_all).toBe(false); expect(permissionsDefault.features_bluetooth).toBe(false); expect(permissionsDefault.features_devel).toBe(false); expect(permissionsDefault.features_multiarch).toBe(false); expect(permissionsDefault.features_canbus).toBe(false); expect(permissionsDefault.features_per_app_dev_shm).toBe(false); expect(permissionsDefault.filesystems_host).toBe(false); expect(permissionsDefault.filesystems_host_os).toBe(false); expect(permissionsDefault.filesystems_host_etc).toBe(false); expect(permissionsDefault.filesystems_home).toBe(false); expect(permissionsDefault.session_talk).toEqual(''); expect(permissionsDefault.session_own).toEqual(''); expect(permissionsDefault.system_talk).toEqual(''); expect(permissionsDefault.system_own).toEqual(''); expect(permissionsDefault.persistent).toEqual('.test;tset.'); expect(permissionsDefault.variables).toEqual('TEST=no'); }); it('loads negated permissions', function() { permissionsDefault.appId = _basicNegatedAppId; expect(permissionsDefault.shared_network).toBe(false); expect(permissionsDefault.shared_ipc).toBe(false); expect(permissionsDefault.sockets_x11).toBe(false); expect(permissionsDefault.sockets_fallback_x11).toBe(false); expect(permissionsDefault.sockets_wayland).toBe(false); expect(permissionsDefault.sockets_pulseaudio).toBe(false); expect(permissionsDefault.sockets_system_bus).toBe(false); expect(permissionsDefault.sockets_session_bus).toBe(false); expect(permissionsDefault.sockets_ssh_auth).toBe(false); expect(permissionsDefault.sockets_pcsc).toBe(false); expect(permissionsDefault.sockets_cups).toBe(false); expect(permissionsDefault.sockets_gpg_agent).toBe(false); expect(permissionsDefault.sockets_inherit_wayland_socket).toBe(false); expect(permissionsDefault.devices_dri).toBe(false); expect(permissionsDefault.devices_input).toBe(false); expect(permissionsDefault.devices_kvm).toBe(false); expect(permissionsDefault.devices_shm).toBe(false); expect(permissionsDefault.devices_all).toBe(false); expect(permissionsDefault.features_bluetooth).toBe(false); expect(permissionsDefault.features_devel).toBe(false); expect(permissionsDefault.features_multiarch).toBe(false); expect(permissionsDefault.features_canbus).toBe(false); expect(permissionsDefault.features_per_app_dev_shm).toBe(false); expect(permissionsDefault.filesystems_host).toBe(false); expect(permissionsDefault.filesystems_host_os).toBe(false); expect(permissionsDefault.filesystems_host_etc).toBe(false); expect(permissionsDefault.filesystems_home).toBe(false); expect(permissionsDefault.filesystems_other).toEqual('!~/test'); expect(permissionsDefault.session_talk).toEqual(''); expect(permissionsDefault.session_own).toEqual(''); expect(permissionsDefault.system_talk).toEqual(''); expect(permissionsDefault.system_own).toEqual(''); expect(permissionsDefault.persistent).toEqual('tset.'); expect(permissionsDefault.variables).toEqual('TEST=no'); }); it('loads negated overrides', function() { GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _basicNegatedAppId; expect(permissionsDefault.shared_network).toBe(true); expect(permissionsDefault.shared_ipc).toBe(true); expect(permissionsDefault.sockets_x11).toBe(true); expect(permissionsDefault.sockets_fallback_x11).toBe(true); expect(permissionsDefault.sockets_wayland).toBe(true); expect(permissionsDefault.sockets_pulseaudio).toBe(true); expect(permissionsDefault.sockets_system_bus).toBe(true); expect(permissionsDefault.sockets_session_bus).toBe(true); expect(permissionsDefault.sockets_ssh_auth).toBe(true); expect(permissionsDefault.sockets_pcsc).toBe(true); expect(permissionsDefault.sockets_cups).toBe(true); expect(permissionsDefault.sockets_gpg_agent).toBe(true); expect(permissionsDefault.sockets_inherit_wayland_socket).toBe(true); expect(permissionsDefault.devices_dri).toBe(true); expect(permissionsDefault.devices_input).toBe(true); expect(permissionsDefault.devices_kvm).toBe(true); expect(permissionsDefault.devices_shm).toBe(true); expect(permissionsDefault.devices_all).toBe(true); expect(permissionsDefault.features_bluetooth).toBe(true); expect(permissionsDefault.features_devel).toBe(true); expect(permissionsDefault.features_multiarch).toBe(true); expect(permissionsDefault.features_canbus).toBe(true); expect(permissionsDefault.features_per_app_dev_shm).toBe(true); expect(permissionsDefault.filesystems_host).toBe(true); expect(permissionsDefault.filesystems_host_os).toBe(true); expect(permissionsDefault.filesystems_host_etc).toBe(true); expect(permissionsDefault.filesystems_home).toBe(true); expect(permissionsDefault.filesystems_other).toEqual(''); expect(permissionsDefault.session_talk).toEqual('org.test.Service-1'); expect(permissionsDefault.session_own).toEqual('org.test.Service-2'); expect(permissionsDefault.system_talk).toEqual('org.test.Service-3'); expect(permissionsDefault.system_own).toEqual('org.test.Service-4'); expect(permissionsDefault.persistent).toEqual('tset.;.test'); expect(permissionsDefault.variables).toEqual('TEST=yes'); }); it('creates overrides when properties changed', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _overridenAppId; permissionsDefault.set_property('shared-network', false); permissionsDefault.set_property('sockets_x11', false); permissionsDefault.set_property('devices_dri', false); permissionsDefault.set_property('shared-network', false); permissionsDefault.set_property('features-bluetooth', false); permissionsDefault.set_property('filesystems-host', false); permissionsDefault.set_property('filesystems-other', '~/tset'); permissionsDefault.set_property('session_talk', 'org.test.Service-3'); permissionsDefault.set_property('session_own', 'org.test.Service-4'); permissionsDefault.set_property('system_talk', 'org.test.Service-5'); permissionsDefault.set_property('system_own', 'org.test.Service-6'); permissionsDefault.set_property('persistent', 'tset.'); permissionsDefault.set_property('variables', 'TEST=maybe'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(GLib.access(_overridenOverride, 0)).toEqual(0); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('reloads previous overrides later on', function() { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _overridenAppId; expect(permissionsDefault.shared_network).toBe(false); expect(permissionsDefault.shared_ipc).toBe(true); expect(permissionsDefault.sockets_x11).toBe(false); expect(permissionsDefault.sockets_fallback_x11).toBe(true); expect(permissionsDefault.sockets_wayland).toBe(true); expect(permissionsDefault.sockets_pulseaudio).toBe(true); expect(permissionsDefault.sockets_system_bus).toBe(true); expect(permissionsDefault.sockets_session_bus).toBe(true); expect(permissionsDefault.sockets_ssh_auth).toBe(true); expect(permissionsDefault.sockets_cups).toBe(true); expect(permissionsDefault.sockets_gpg_agent).toBe(true); expect(permissionsDefault.sockets_inherit_wayland_socket).toBe(true); expect(permissionsDefault.devices_dri).toBe(false); expect(permissionsDefault.devices_all).toBe(true); expect(permissionsDefault.features_bluetooth).toBe(false); expect(permissionsDefault.features_devel).toBe(true); expect(permissionsDefault.features_multiarch).toBe(true); expect(permissionsDefault.filesystems_host).toBe(false); expect(permissionsDefault.filesystems_host_os).toBe(false); expect(permissionsDefault.filesystems_host_etc).toBe(false); expect(permissionsDefault.filesystems_home).toBe(true); expect(permissionsDefault.filesystems_other).toEqual('~/tset'); expect(permissionsDefault.session_talk).toEqual('org.test.Service-3'); expect(permissionsDefault.session_own).toEqual('org.test.Service-4'); expect(permissionsDefault.system_talk).toEqual('org.test.Service-5'); expect(permissionsDefault.system_own).toEqual('org.test.Service-6'); expect(permissionsDefault.persistent).toEqual('tset.'); expect(permissionsDefault.variables).toEqual('TEST=maybe'); }); it('resets overrides', function() { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _overridenAppId; permissionsDefault.reset(); expect(GLib.access(_overridenOverride, 0)).toEqual(-1); }); it('creates overrides when properties values changed', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _overridenAppId; permissionsDefault.set_property('shared-network', false); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(GLib.access(_overridenOverride, 0)).toEqual(0); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('removes overrides when properties values restore', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _overridenAppId; permissionsDefault.set_property('shared-network', true); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(GLib.access(_overridenOverride, 0)).toEqual(-1); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('loads old filesystems overrides', function() { GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _oldAppId; expect(permissionsDefault.filesystems_other).toEqual('xdg-pictures:ro'); }); it('reduces filesystems permission', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _reduceAppId; expect(permissionsDefault.filesystems_other).toEqual('xdg-downloads'); permissionsDefault.set_property('filesystems-other', 'xdg-downloads:ro'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(hasOnly(_reduceOverride, group, _key, 'xdg-downloads:ro')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('increases filesystems permission', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _increaseAppId; expect(permissionsDefault.filesystems_other).toEqual('xdg-pictures:ro'); permissionsDefault.set_property('filesystems-other', 'xdg-pictures:rw'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(hasOnly(_increaseOverride, group, _key, 'xdg-pictures:rw')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('increases filesystems permission (default)', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _increaseAppId; expect(permissionsDefault.filesystems_other).toEqual('xdg-pictures:ro'); permissionsDefault.set_property('filesystems-other', 'xdg-pictures'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(hasOnly(_increaseOverride, group, _key, 'xdg-pictures')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles negated filesystems permission', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _negationAppId; expect(permissionsDefault.filesystems_other).toEqual('!~/negative;~/positive'); permissionsDefault.set_property('filesystems-other', '!~/negative'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(hasOnly(_negationOverride, group, _key, '!~/positive')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles removing negated filesystems permission', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _negationAppId; expect(permissionsDefault.filesystems_other).toEqual('!~/negative;~/positive'); permissionsDefault.set_property('filesystems-other', '~/positive'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(hasOnly(_negationOverride, group, _key, '~/negative')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles adding negated filesystems override (manually)', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _negationAppId; expect(permissionsDefault.filesystems_other).toEqual('!~/negative;~/positive'); permissionsDefault.set_property('filesystems-other', '!~/negative;!~/positive'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(hasOnly(_negationOverride, group, _key, '!~/positive')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles removing negated filesystems override (manually)', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _negationAppId; expect(permissionsDefault.filesystems_other).toEqual('!~/negative;~/positive'); permissionsDefault.set_property('filesystems-other', '~/negative;~/positive'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(hasOnly(_negationOverride, group, _key, '~/negative')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('ignores unsupported permissions', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _unsupportedAppId; expect(permissionsDefault.filesystems_other).toEqual('~/unsupported'); permissionsDefault.set_property('filesystems-other', ''); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(hasOnly(_unsupportedOverride, group, _key, '!~/unsupported')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('preserves unsupported permissions', function(done) { GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _unsupportedAppId; GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.set_property('filesystems-other', ''); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_unsupportedOverride, 'Context', 'unsupported', 'always')).toBe(true); expect(has(_unsupportedOverride, 'Context', 'unsupported', 'undefined')).toBe(false); expect(has(_unsupportedOverride, 'Context', 'unsupported', 'null')).toBe(false); expect(has(_unsupportedOverride, 'Context', 'shared', 'unsupported')).toBe(true); expect(has(_unsupportedOverride, 'Context', 'shared', 'undefined')).toBe(false); expect(has(_unsupportedOverride, 'Context', 'shared', 'null')).toBe(false); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('signals changes with overrides', function(done) { spyOn(permissionsDefault, 'emit'); GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _basicAppId; permissionsDefault.set_property('shared-network', false); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(permissionsDefault.emit.calls.mostRecent().args).toEqual(['changed', true, false]); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('signals changes with no overrides', function() { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _basicAppId; spyOn(permissionsDefault, 'emit'); permissionsDefault.reset(); expect(permissionsDefault.emit.calls.first().args).toEqual(['changed', false, false]); expect(permissionsDefault.emit.calls.count()).toEqual(2); // including reset signal }); it('signals changes with unsupported overrides', function() { spyOn(permissionsDefault, 'emit'); GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _unsupportedAppId; expect(permissionsDefault.emit.calls.mostRecent().args).toEqual(['changed', true, true]); }); it('signals changes without unsupported overrides', function() { spyOn(permissionsDefault, 'emit'); GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _unsupportedAppId; expect(permissionsDefault.emit.calls.mostRecent().args).toEqual(['changed', false, false]); }); it('saves pending updates before selecting other application', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _basicAppId; expect(permissionsDefault.shared_network).toEqual(true); permissionsDefault.set_property('shared-network', false); permissionsDefault.appId = _unsupportedAppId; GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(GLib.access(_basicOverride, 0)).toEqual(0); expect(GLib.access(_unsupportedOverride, 0)).toEqual(-1); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('saves pending updates before shutting down', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _basicAppId; expect(permissionsDefault.shared_network).toEqual(true); permissionsDefault.set_property('shared-network', false); permissionsDefault.shutdown(); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(GLib.access(_basicOverride, 0)).toEqual(0); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('disables all permissions with old flatpak version', function() { GLib.setenv('FLATPAK_INFO_PATH', _flatpakInfoOld, true); infoDefault.reload(); portalsDefault.reload(); permissionsDefault.appId = _basicAppId; const total = permissionsDefault.getAll().filter(p => p.supported).length; expect(total).toEqual(0); }); it('enables all permissions with new flatpak version', function() { GLib.setenv('FLATPAK_INFO_PATH', _flatpakInfoNew, true); infoDefault.reload(); portalsDefault.reload(); permissionsDefault.appId = _basicAppId; const total = permissionsDefault.getAll().filter(p => p.supported).length; expect(total).toEqual(_totalPermissions); }); it('disables permissions with stable flatpak version', function() { infoDefault.reload(); portalsDefault.reload(); permissionsDefault.appId = _basicAppId; const total = permissionsDefault.getAll().filter(p => p.supported).length; expect(total).toEqual(_totalPermissions - 10); }); it('handles missing .flatpak-info', function() { GLib.setenv('FLATPAK_INFO_PATH', _none, true); infoDefault.reload(); portalsDefault.reload(); permissionsDefault.appId = _basicAppId; const total = permissionsDefault.getAll().filter(p => p.supported).length; expect(total).toEqual(_totalPermissions); }); it('loads extra applications', function() { GLib.setenv('FLATPAK_CONFIG_DIR', _flatpakConfig, true); applicationsDefault.reload(); const appIds = applicationsDefault.getAll().map(a => a.appId); expect(appIds).toContain(_extraAppId); }); it('preserves installation priorities', function() { GLib.setenv('FLATPAK_USER_DIR', _user, true); GLib.setenv('FLATPAK_CONFIG_DIR', _flatpakConfig, true); applicationsDefault.reload(); permissionsDefault.appId = _extraAppId; expect(permissionsDefault.shared_network).toBe(false); expect(permissionsDefault.shared_ipc).toBe(true); }); it('add new environment variable', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _environmentAppId; expect(permissionsDefault.variables).toEqual('TEST=yes'); permissionsDefault.set_property('variables', 'TEST=yes;TEST2=no'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(hasOnly(_environmentOverride, 'Environment', 'TEST2', 'no')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('override original environment variable', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _environmentAppId; expect(permissionsDefault.variables).toEqual('TEST=yes'); permissionsDefault.set_property('variables', 'TEST=no'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(hasOnly(_environmentOverride, 'Environment', 'TEST', 'no')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('remove original environment variable', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _environmentAppId; expect(permissionsDefault.variables).toEqual('TEST=yes'); permissionsDefault.set_property('variables', ''); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(hasOnly(_environmentOverride, 'Environment', 'TEST', '')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles re-loading removed variables', function() { GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _variablesAppId; expect(permissionsDefault.variables).toEqual(''); }); it('handles non-valid environment variable', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _environmentAppId; expect(permissionsDefault.variables).toEqual('TEST=yes'); permissionsDefault.set_property('variables', 'TEST=yes;TE ST=no'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(GLib.access(_environmentOverride, 0)).toEqual(-1); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles RUST debug export environment variables', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _environmentAppId; expect(permissionsDefault.variables).toEqual('TEST=yes'); permissionsDefault.set_property('variables', 'TEST=yes=no'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(hasOnly(_environmentOverride, 'Environment', 'TEST', 'yes=no')).toBe(true); permissionsDefault.appId = _environmentAppId; expect(permissionsDefault.variables).toEqual('TEST=yes=no'); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles environment variables with semicolons', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _environmentAppId; expect(permissionsDefault.variables).toEqual('TEST=yes'); permissionsDefault.set_property('variables', 'TEST=yes;no'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { permissionsDefault.appId = _environmentAppId; expect(permissionsDefault.variables).toEqual('TEST=yes;no'); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('Add new well-known names', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _busAppId; expect(permissionsDefault.session_talk).toEqual('org.test.Service-1'); expect(permissionsDefault.session_own).toEqual('org.test.Service-2'); permissionsDefault.set_property('session-talk', 'org.test.Service-1;org.test.Service-3'); permissionsDefault.set_property('session-own', 'org.test.Service-2;org.test.Service-4'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_busOverride, _sessionGroup, 'org.test.Service-1', 'talk')).toBe(false); expect(has(_busOverride, _sessionGroup, 'org.test.Service-2', 'own')).toBe(false); expect(has(_busOverride, _sessionGroup, 'org.test.Service-3', 'talk')).toBe(true); expect(has(_busOverride, _sessionGroup, 'org.test.Service-4', 'own')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('Remove well-known names', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _busAppId; expect(permissionsDefault.session_talk).toEqual('org.test.Service-1'); expect(permissionsDefault.session_own).toEqual('org.test.Service-2'); permissionsDefault.set_property('session-talk', ''); permissionsDefault.set_property('session-own', ''); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_busOverride, _sessionGroup, 'org.test.Service-1', 'none')).toBe(true); expect(has(_busOverride, _sessionGroup, 'org.test.Service-2', 'none')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('Modify well-known names', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _busAppId; expect(permissionsDefault.session_talk).toEqual('org.test.Service-1'); expect(permissionsDefault.session_own).toEqual('org.test.Service-2'); permissionsDefault.set_property('session-talk', 'org.test.Service-2'); permissionsDefault.set_property('session-own', 'org.test.Service-1'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_busOverride, _sessionGroup, 'org.test.Service-1', 'own')).toBe(true); expect(has(_busOverride, _sessionGroup, 'org.test.Service-2', 'talk')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('signals reset when done explicitly', function() { spyOn(permissionsDefault, 'emit'); GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _basicAppId; permissionsDefault.reset(); expect(permissionsDefault.emit.calls.mostRecent().args).toEqual(['reset']); }); it('restores overrides when undo', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _basicAppId; expect(permissionsDefault.shared_network).toEqual(true); permissionsDefault.set_property('shared_network', false); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(permissionsDefault.shared_network).toBe(false); permissionsDefault.reset(); expect(permissionsDefault.shared_network).toBe(true); permissionsDefault.undo(); expect(permissionsDefault.shared_network).toBe(false); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles portals permissions', function(done) { permissionsDefault.appId = _basicAppId; expect(permissionsDefault.portals_background).toBe(portalState.UNSET); permissionsDefault.set_property('portals_background', portalState.ALLOWED); expect(permissionsDefault.portals_notification).toBe(portalState.UNSET); permissionsDefault.set_property('portals_notification', portalState.ALLOWED); expect(permissionsDefault.portals_microphone).toBe(portalState.UNSET); permissionsDefault.set_property('portals_microphone', portalState.ALLOWED); expect(permissionsDefault.portals_speakers).toBe(portalState.UNSET); permissionsDefault.set_property('portals_speakers', portalState.ALLOWED); expect(permissionsDefault.portals_camera).toBe(portalState.UNSET); permissionsDefault.set_property('portals_camera', portalState.ALLOWED); expect(permissionsDefault.portals_location).toBe(portalState.UNSET); permissionsDefault.set_property('portals_location', portalState.ALLOWED); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(getValueFromService('background', 'background', 'yes', _basicAppId)).toBe(true); expect(getValueFromService('notifications', 'notification', 'yes', _basicAppId)).toBe(true); expect(getValueFromService('devices', 'microphone', 'yes', _basicAppId)).toBe(true); expect(getValueFromService('devices', 'speakers', 'yes', _basicAppId)).toBe(true); expect(getValueFromService('devices', 'camera', 'yes', _basicAppId)).toBe(true); expect(getValueFromService('location', 'location', 'EXACT', _basicAppId)).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('resets portals permissions', function() { permissionsDefault.appId = _basicAppId; permissionsDefault.reset(); expect(getValueFromService('background', 'background', null, _basicAppId)).toBe(true); expect(getValueFromService('notifications', 'notification', null, _basicAppId)).toBe(true); expect(getValueFromService('devices', 'microphone', null, _basicAppId)).toBe(true); expect(getValueFromService('devices', 'speakers', null, _basicAppId)).toBe(true); expect(getValueFromService('devices', 'camera', null, _basicAppId)).toBe(true); expect(getValueFromService('location', 'location', null, _basicAppId)).toBe(true); }); it('restores portals permissions when undo', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _overridenAppId; expect(permissionsDefault.portals_background).toBe(portalState.UNSET); expect(permissionsDefault.portals_notification).toBe(portalState.UNSET); expect(permissionsDefault.portals_microphone).toBe(portalState.UNSET); expect(permissionsDefault.portals_speakers).toBe(portalState.UNSET); expect(permissionsDefault.portals_camera).toBe(portalState.UNSET); expect(permissionsDefault.portals_location).toBe(portalState.UNSET); permissionsDefault.set_property('portals_notification', portalState.ALLOWED); permissionsDefault.set_property('portals_background', portalState.ALLOWED); permissionsDefault.set_property('portals_microphone', portalState.ALLOWED); permissionsDefault.set_property('portals_speakers', portalState.ALLOWED); permissionsDefault.set_property('portals_camera', portalState.ALLOWED); permissionsDefault.set_property('portals_location', portalState.ALLOWED); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(getValueFromService('background', 'background', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('notifications', 'notification', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'microphone', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'speakers', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'camera', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('location', 'location', 'EXACT', _overridenAppId)).toBe(true); permissionsDefault.reset(); expect(getValueFromService('background', 'background', null, _overridenAppId)).toBe(true); expect(getValueFromService('notifications', 'notification', null, _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'microphone', null, _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'speakers', null, _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'camera', null, _overridenAppId)).toBe(true); expect(getValueFromService('location', 'location', null, _overridenAppId)).toBe(true); permissionsDefault.undo(); expect(getValueFromService('background', 'background', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('notifications', 'notification', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'microphone', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'speakers', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('devices', 'camera', 'yes', _overridenAppId)).toBe(true); expect(getValueFromService('location', 'location', 'EXACT', _overridenAppId)).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('does not write to the store unnecessarily', function() { permissionsDefault.appId = _reduceAppId; expect(permissionsDefault.portals_background).toBe(portalState.UNSET); expect(getValueFromService('background', 'background', null, _reduceAppId)).toBe(true); }); it('handles portals with partial tables on permission store', function() { partialService(); GLib.setenv('FLATPAK_INFO_PATH', _flatpakInfoNew, true); infoDefault.reload(); portalsDefault.reload(); permissionsDefault.appId = _basicAppId; const total = permissionsDefault.getAll().filter(p => p.supported).length; expect(total).toEqual(_totalPermissions - 1); expect(permissionsDefault.portals_background).toBe(portalState.UNSET); expect(permissionsDefault.portals_notification).toBe(portalState.UNSET); expect(permissionsDefault.portals_microphone).toBe(portalState.UNSUPPORTED); expect(permissionsDefault.portals_speakers).toBe(portalState.UNSET); expect(permissionsDefault.portals_camera).toBe(portalState.UNSET); expect(permissionsDefault.portals_location).toBe(portalState.UNSET); }); it('handles writing to missing pair on permission store', function(done) { permissionsDefault.appId = _basicAppId; expect(permissionsDefault.portals_microphone).toBe(portalState.UNSUPPORTED); permissionsDefault.set_property('portals_microphone', portalState.ALLOWED); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(getValueFromService('devices', 'microphone', null, _basicAppId)).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles portals without permission store', function() { stopService(); GLib.setenv('FLATPAK_INFO_PATH', _flatpakInfoNew, true); infoDefault.reload(); portalsDefault.reload(); permissionsDefault.appId = _basicAppId; const total = permissionsDefault.getAll().filter(p => p.supported).length; expect(total).toEqual(_totalPermissions - 6); expect(permissionsDefault.portals_background).toBe(portalState.UNSUPPORTED); expect(permissionsDefault.portals_notification).toBe(portalState.UNSUPPORTED); expect(permissionsDefault.portals_microphone).toBe(portalState.UNSUPPORTED); expect(permissionsDefault.portals_speakers).toBe(portalState.UNSUPPORTED); expect(permissionsDefault.portals_camera).toBe(portalState.UNSUPPORTED); expect(permissionsDefault.portals_location).toBe(portalState.UNSUPPORTED); }); it('handles trailing semicolons', function(done) { GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _trailingSemicolonId; expect(permissionsDefault.shared_network).toBe(true); expect(permissionsDefault.shared_network).toBe(true); expect(permissionsDefault.variables).toEqual('TEST=;'); /* force change to verify that there ins't unsupported permissions */ spyOn(permissionsDefault, 'emit'); GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.set_property('shared-network', false); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(permissionsDefault.emit.calls.mostRecent().args).toEqual(['changed', true, false]); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles loading filesystems with mode', function() { GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _filesystemWithMode; expect(permissionsDefault.filesystems_other).toEqual('home:ro'); }); it('handles overriding filesystems with mode', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _filesystemWithMode; expect(permissionsDefault.filesystems_other).toEqual('host:ro;xdg-documents:ro;home:ro'); permissionsDefault.set_property('filesystems-other', 'home:ro'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('filesystems-other'); expect(has(_filesystemWithModeOverride, group, _key, '!host')).toBe(true); expect(has(_filesystemWithModeOverride, group, _key, '!xdg-documents')).toBe(true); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('loads global overrides', function() { GLib.setenv('FLATPAK_USER_DIR', _global, true); permissionsDefault.appId = _globalAppId; expect(permissionsDefault.sockets_x11).toBe(false); expect(permissionsDefault.sockets_wayland).toBe(true); expect(permissionsDefault.sockets_cups).toBe(true); expect(permissionsDefault.variables).toEqual('TEST1=global;TEST2=original;TEST3=global'); expect(permissionsDefault.persistent).toEqual('.test1;.test2'); expect(permissionsDefault.filesystems_other).toEqual('~/test2;~/test3'); expect(permissionsDefault.session_talk).toEqual('org.test.Service-3'); expect(permissionsDefault.session_own).toEqual('org.test.Service-2'); }); it('handles overriding apps already globally overridden', function(done) { GLib.setenv('FLATPAK_USER_DIR', _global, true); permissionsDefault.appId = _globalAppId; expect(permissionsDefault.sockets_x11).toBe(false); permissionsDefault.set_property('sockets-x11', true); expect(permissionsDefault.sockets_wayland).toBe(true); permissionsDefault.set_property('sockets-wayland', false); expect(permissionsDefault.sockets_cups).toBe(true); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = permissionsDefault.constructor.getGroupForProperty('sockets-x11'); expect(has(_globalWithGlobalOverride, group, 'sockets', 'x11')).toBe(true); expect(has(_globalWithGlobalOverride, group, 'sockets', '!wayland')).toBe(true); expect(hasInTotal(_globalWithGlobalOverride)).toEqual(2); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles variables already globally overridden', function(done) { GLib.setenv('FLATPAK_USER_DIR', _global, true); permissionsDefault.appId = _globalAppId; expect(permissionsDefault.variables).toEqual('TEST1=global;TEST2=original;TEST3=global'); permissionsDefault.set_property('variables', 'TEST2=override;TEST3=global;TEST4=override'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_globalWithGlobalOverride, 'Environment', 'TEST1', '')).toBe(true); expect(has(_globalWithGlobalOverride, 'Environment', 'TEST2', 'override')).toBe(true); expect(has(_globalWithGlobalOverride, 'Environment', 'TEST4', 'override')).toBe(true); expect(hasInTotal(_globalWithGlobalOverride)).toEqual(3); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles persistent path already globally overridden', function(done) { GLib.setenv('FLATPAK_USER_DIR', _global, true); permissionsDefault.appId = _globalAppId; expect(permissionsDefault.persistent).toEqual('.test1;.test2'); permissionsDefault.set_property('persistent', '.test1;.test2;.test3'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_globalWithGlobalOverride, 'Context', 'persistent', '.test3')).toBe(true); expect(hasInTotal(_globalWithGlobalOverride)).toEqual(1); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles filesystem path already globally overridden', function(done) { GLib.setenv('FLATPAK_USER_DIR', _global, true); permissionsDefault.appId = _globalAppId; expect(permissionsDefault.filesystems_other).toEqual('~/test2;~/test3'); permissionsDefault.set_property('filesystems_other', '~/test4'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_globalWithGlobalOverride, 'Context', 'filesystems', '!~/test2')).toBe(true); expect(has(_globalWithGlobalOverride, 'Context', 'filesystems', '!~/test3')).toBe(true); expect(has(_globalWithGlobalOverride, 'Context', 'filesystems', '~/test4')).toBe(true); expect(hasInTotal(_globalWithGlobalOverride)).toEqual(3); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles well-known names already globally overridden', function(done) { GLib.setenv('FLATPAK_USER_DIR', _global, true); permissionsDefault.appId = _globalAppId; expect(permissionsDefault.session_talk).toEqual('org.test.Service-3'); permissionsDefault.set_property('session_talk', 'org.test.Service-4'); expect(permissionsDefault.session_own).toEqual('org.test.Service-2'); permissionsDefault.set_property('session_own', 'org.test.Service-5'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { const group = 'Session Bus Policy'; expect(has(_globalWithGlobalOverride, group, 'org.test.Service-3', 'none')).toBe(true); expect(has(_globalWithGlobalOverride, group, 'org.test.Service-4', 'talk')).toBe(true); expect(has(_globalWithGlobalOverride, group, 'org.test.Service-2', 'none')).toBe(true); expect(has(_globalWithGlobalOverride, group, 'org.test.Service-5', 'own')).toBe(true); expect(hasInTotal(_globalWithGlobalOverride)).toEqual(4); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('restores all overriden global overrides', function() { GLib.setenv('FLATPAK_USER_DIR', _global, true); permissionsDefault.appId = _globalRestoredAppId; expect(permissionsDefault.sockets_x11).toBe(true); expect(permissionsDefault.sockets_wayland).toBe(false); expect(permissionsDefault.sockets_cups).toBe(true); expect(permissionsDefault.variables).toEqual('TEST2=override;TEST3=global;TEST4=override'); expect(permissionsDefault.persistent).toEqual('.test1;.test2;.test3'); expect(permissionsDefault.filesystems_other).toEqual('~/test4'); expect(permissionsDefault.session_talk).toEqual('org.test.Service-4'); expect(permissionsDefault.session_own).toEqual('org.test.Service-5'); }); it('sets proper override statuses', function() { GLib.setenv('FLATPAK_USER_DIR', _statuses, true); permissionsDefault.appId = _statusesAppId; expect(permissionsDefault.sockets_cups_status).toEqual('original'); expect(permissionsDefault.sockets_wayland_status).toEqual('global'); expect(permissionsDefault.sockets_x11_status).toEqual('user'); expect(permissionsDefault.variables_status).toEqual('original;global;user'); expect(permissionsDefault.persistent_status).toEqual('original;global;user'); expect(permissionsDefault.filesystems_other_status).toEqual('original;global;user'); expect(permissionsDefault.session_talk_status).toEqual('original;global;user'); expect(permissionsDefault.session_own_status).toEqual('original;global;user'); }); it('handles writting global overridden', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = 'global'; expect(permissionsDefault.sockets_x11).toBe(false); permissionsDefault.set_property('sockets-x11', true); expect(permissionsDefault.variables).toEqual(''); permissionsDefault.set_property('variables', 'TEST=override'); expect(permissionsDefault.persistent).toEqual(''); permissionsDefault.set_property('persistent', '.test'); expect(permissionsDefault.filesystems_other).toEqual(''); permissionsDefault.set_property('filesystems_other', '~/test'); expect(permissionsDefault.session_talk).toEqual(''); permissionsDefault.set_property('session_talk', 'org.test.Talk'); expect(permissionsDefault.session_own).toEqual(''); permissionsDefault.set_property('session_own', 'org.test.Own'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_globalOverride, 'Context', 'sockets', 'x11')).toBe(true); expect(has(_globalOverride, 'Environment', 'TEST', 'override')).toBe(true); expect(has(_globalOverride, 'Context', 'persistent', '.test')).toBe(true); expect(has(_globalOverride, 'Context', 'filesystems', '~/test')).toBe(true); expect(has(_globalOverride, 'Session Bus Policy', 'org.test.Talk', 'talk')).toBe(true); expect(has(_globalOverride, 'Session Bus Policy', 'org.test.Own', 'own')).toBe(true); expect(hasInTotal(_globalOverride)).toEqual(6); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('preserves negated global overridden', function(done) { const source = Gio.File.new_for_path(_globalNegatedOverride); const destination = Gio.File.new_for_path(_globalOverride); source.copy(destination, Gio.FileCopyFlags.NONE, null, null); GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = 'global'; expect(permissionsDefault.sockets_x11).toBe(false); expect(permissionsDefault.filesystems_other).toEqual('!~/test'); expect(permissionsDefault.variables).toEqual(''); expect(permissionsDefault.session_talk).toEqual(''); expect(permissionsDefault.session_own).toEqual(''); permissionsDefault.set_property('shared-network', true); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_globalOverride, 'Context', 'shared', 'unsupported')).toBe(true); expect(has(_globalOverride, 'Context', 'shared', 'network')).toBe(true); expect(has(_globalOverride, 'Context', 'sockets', '!x11')).toBe(true); expect(has(_globalOverride, 'Context', 'filesystems', '!~/test')).toBe(true); expect(has(_globalOverride, 'Environment', 'TEST', '')).toBe(true); expect(has(_globalOverride, 'Session Bus Policy', 'org.test.Test', 'none')).toBe(true); expect(hasInTotal(_globalOverride)).toEqual(6); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles weird interactions with reset mode', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _resetModeId; expect(permissionsDefault.filesystems_host).toBe(true); expect(permissionsDefault.filesystems_other).toEqual(''); permissionsDefault.set_property('filesystems_other', '!host:reset'); expect(permissionsDefault.sockets_x11).toBe(false); permissionsDefault.set_property('sockets_x11', true); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_resetModeOverride, 'Context', 'sockets', 'x11')).toBe(true); expect(has(_resetModeOverride, 'Context', 'filesystems', '!host:reset')).toBe(true); expect(hasInTotal(_resetModeOverride)).toEqual(2); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles weird interactions with global reset mode', function(done) { const source = Gio.File.new_for_path(_globalResetModeOverride); const destination = Gio.File.new_for_path(_globalOverride); source.copy(destination, Gio.FileCopyFlags.NONE, null, null); GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _resetModeId; expect(permissionsDefault.filesystems_host).toBe(true); expect(permissionsDefault.filesystems_other).toEqual('!host:reset'); expect(permissionsDefault.sockets_x11).toBe(false); permissionsDefault.set_property('sockets_x11', true); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { expect(has(_resetModeOverride, 'Context', 'sockets', 'x11')).toBe(true); expect(hasInTotal(_resetModeOverride)).toEqual(1); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles global overrides that negate filesystems with mode', function(done) { GLib.setenv('FLATPAK_USER_DIR', _tmp, true); permissionsDefault.appId = _filesystemWithMode; expect(permissionsDefault.filesystems_other).toEqual('host:ro;xdg-documents:ro;home:ro'); permissionsDefault.appId = 'global'; expect(permissionsDefault.filesystems_other).toEqual(''); permissionsDefault.set_property('filesystems_other', '!host'); GLib.timeout_add(GLib.PRIORITY_HIGH, delay + 1, () => { permissionsDefault.appId = _filesystemWithMode; expect(permissionsDefault.filesystems_other).toEqual('xdg-documents:ro;home:ro'); done(); return GLib.SOURCE_REMOVE; }); update(); }); it('handles malformed overrides', function() { spyOn(permissionsDefault, 'emit'); GLib.setenv('FLATPAK_USER_DIR', _user, true); permissionsDefault.appId = _malformedAppId; expect(permissionsDefault.emit.calls.first().args).toEqual(['failed']); }); }); flatseal-2.3.0/tests/src/testPathRow.js000066400000000000000000000120761467660615300201060ustar00rootroot00000000000000/* eslint max-len: */ /* testPathRow.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {setup} = imports.utils; setup(); const {FlatsealPathRow, mode, validity} = imports.widgets.pathRow; describe('FlatsealPathRow', function() { var row; beforeEach(function() { row = new FlatsealPathRow(); }); it('starts empty', function() { expect(row.text).toEqual(''); }); it('processes path correctly', function() { const text = 'home:ro'; row.text = text; expect(row.text).toEqual(text); }); it('sets ready-only style class', function() { row.text = 'home:ro'; const context = row.get_style_context(); expect(context.has_class(mode.READONLY)).toBe(true); expect(context.has_class(mode.READWRITE)).toBe(false); expect(context.has_class(mode.CREATE)).toBe(false); }); it('sets ready-write style class', function() { row.text = 'home:rw'; const context = row.get_style_context(); expect(context.has_class(mode.READONLY)).toBe(false); expect(context.has_class(mode.READWRITE)).toBe(true); expect(context.has_class(mode.CREATE)).toBe(false); }); it('sets ready-write style class (default)', function() { row.text = 'home'; const context = row.get_style_context(); expect(context.has_class(mode.READONLY)).toBe(false); expect(context.has_class(mode.READWRITE)).toBe(true); expect(context.has_class(mode.CREATE)).toBe(false); }); it('sets create style class', function() { row.text = 'home:create'; const context = row.get_style_context(); expect(context.has_class(mode.READONLY)).toBe(false); expect(context.has_class(mode.READWRITE)).toBe(false); expect(context.has_class(mode.CREATE)).toBe(true); }); function _handles(description, path, _mode) { it(`handles ${description} paths (${_mode ? _mode : 'default'})`, function() { row.text = `${path}${_mode}`; const context = row.get_style_context(); expect(context.has_class(validity.VALID)).toBe(true); expect(context.has_class(validity.NOTVALID)).toBe(false); }); } _handles('absolute', '/home/.test', ''); _handles('absolute', '/home/.test', ':ro'); _handles('absolute', '/home/.test', ':rw'); _handles('absolute', '/home/.test', ':create'); _handles('absolute', '/home/.test/', ''); _handles('relative', '~/.test', ''); _handles('relative', '~/.test', ':ro'); _handles('relative', '~/.test', ':rw'); _handles('relative', '~/.test', ':create'); _handles('relative', '~/.test/', ''); _handles('relative', '~/.local/share/Folder/Games/common/Console Classics/uncompressed GAMEs/Old_Game_wVersion3.bin', ':ro'); _handles('relative', '!~/.TelegramDesktop', ''); _handles('token-based', 'home/.test', ''); _handles('token-based', 'home/.test', ':ro'); _handles('token-based', 'home/.test', ':rw'); _handles('token-based', 'home/.test', ':create'); _handles('token-based', 'home/.test/', ''); _handles('token-based', 'xdg-download/Telegram Desktop:create', ''); _handles('token-based', '!xdg-download', ''); _handles('token-based', '!xdg-download', ':reset'); function _catches(description, path, _mode) { it(`catches ${description} paths (${_mode ? _mode : 'default'})`, function() { row.text = `${path}${_mode}`; const context = row.get_style_context(); expect(context.has_class(validity.VALID)).toBe(false); expect(context.has_class(validity.NOTVALID)).toBe(true); }); } _catches('not-valid empty', '', ''); _catches('not-valid absolute', '/', ''); _catches('not-valid relative', '~/', ''); _catches('not-valid absolute', '/home/ .test ', ''); _catches('not-valid relative', '~/ .test ', ''); _catches('not-valid token-based', 'home ', ':ro'); _catches('not-valid token-based', 'home/', ''); _catches('not-valid token-based', 'home/.test/ ', ''); _catches('not-valid token-based', 'home-non-valid', ''); _catches('not-valid token-based', 'jome/.test ', ''); _catches('not-valid mode', 'home', ':'); _catches('not-valid mode', 'home', ':not'); _catches('not-valid negation', '!!~/.TelegramDesktop', ''); _catches('not-valid negation', '!~/.TelegramDesktop', ':'); _catches('not-valid negation', '!~/.TelegramDesktop', ':ro'); }); flatseal-2.3.0/tests/src/testPathsViewer.js000066400000000000000000000032251467660615300207570ustar00rootroot00000000000000/* testPathsViewer.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ const {setup} = imports.utils; setup(); const {FlatsealPathsViewer} = imports.widgets.pathsViewer; const {FlatsealPathRow} = imports.widgets.pathRow; const _paths = 'home;host;xdg-desktop'; describe('FlatsealPathsViewer', function() { var viewer; beforeEach(function() { viewer = new FlatsealPathsViewer( (v) => v.join(';'), (v) => v.split(';'), FlatsealPathRow, ); }); it('starts empty', function() { expect(viewer.text).toEqual(''); }); it('processes paths correctly', function() { viewer.text = _paths; expect(viewer.text).toEqual(_paths); }); it('handles new paths', function() { viewer.text = _paths; viewer.add('~/Steam'); expect(viewer.text).toEqual(`${_paths};~/Steam`); }); it('resets paths', function() { viewer.add(''); viewer.text = ''; expect(viewer.text).toEqual(''); }); }); flatseal-2.3.0/tests/src/utils.js000066400000000000000000000115621467660615300167610ustar00rootroot00000000000000/* exported setup update has hasOnly hasInTotal startService stopService getValueFromService waitForService partialService */ /* eslint no-extend-native: */ /* utils.js * * Copyright 2020 Martin Abente Lahaye * * 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 . */ imports.gi.versions.Gtk = '4.0'; const {gettext} = imports; const {Gio, GLib, Gtk} = imports.gi; const TestPermissionStoreIface = ` `; function setup() { Gtk.init(); /* XXX this shouldn't be needed */ const {format} = imports; String.prototype.format = format.format; window._ = gettext.gettext; const src = GLib.build_filenamev([ GLib.get_current_dir(), 'src', 'com.github.tchx84.Flatseal.src.gresource', ]); const data = GLib.build_filenamev([ GLib.get_current_dir(), 'src', 'com.github.tchx84.Flatseal.data.gresource', ]); Gio.Resource.load(src)._register(); Gio.Resource.load(data)._register(); imports.searchPath.unshift('resource:///com/github/tchx84/Flatseal/js'); } function update() { const context = GLib.MainContext.default(); while (context.pending()) context.iteration(true); } function has(path, group, key, value) { const keyFile = new GLib.KeyFile(); keyFile.load_from_file(path, 0); const [keys] = keyFile.get_keys(group); if (!keys.includes(key)) return false; const values = keyFile.get_value(group, key); return values.split(';').indexOf(value) !== -1; } function hasOnly(path, group, key, value) { const keyFile = new GLib.KeyFile(); keyFile.load_from_file(path, 0); const [keys] = keyFile.get_keys(group); const values = keyFile.get_value(group, key); const list = values.split(';'); return keys.length === 1 && list.length === 1 && list.indexOf(value) !== -1; } function hasInTotal(path) { let count = 0; const keyFile = new GLib.KeyFile(); keyFile.load_from_file(path, 0); const [groups] = keyFile.get_groups(); groups.forEach(group => { const [keys] = keyFile.get_keys(group); keys.forEach(key => { const values = keyFile.get_value(group, key); count += values.split(';').length; }); }); return count; } function startService() { GLib.setenv( 'FLATSEAL_PORTAL_BUS_NAME', 'com.github.tchx84.Flatseal.PermissionStore', true); const service = GLib.build_filenamev([ '..', 'tests', 'service.js', ]); window.service = Gio.Subprocess.new(['gjs', service], null); } function stopService() { window.service.force_exit(); } function getValueFromService(table, id, allowed, appId) { const {PermissionsIface} = imports.models.portals; const Proxy = Gio.DBusProxy.makeProxyWrapper(PermissionsIface); const proxy = new Proxy( Gio.DBus.session, GLib.getenv('FLATSEAL_PORTAL_BUS_NAME'), '/org/freedesktop/impl/portal/PermissionStore'); let appIds; try { [appIds] = proxy.LookupSync(table, id); } catch (err) { appIds = null; } // check if no entry in the permission store if (allowed === null && (appIds === null || !(appId in appIds))) return true; const value = appId in appIds && appIds[appId][0] === allowed; return value; } function waitForService() { const {PermissionsIface} = imports.models.portals; var version = null; do { GLib.usleep(1000000); const Proxy = Gio.DBusProxy.makeProxyWrapper(PermissionsIface); const proxy = new Proxy( Gio.DBus.session, GLib.getenv('FLATSEAL_PORTAL_BUS_NAME'), '/org/freedesktop/impl/portal/PermissionStore'); version = proxy.version; // eslint-disable-line prefer-destructuring } while (version === null); } function partialService() { const Proxy = Gio.DBusProxy.makeProxyWrapper(TestPermissionStoreIface); const proxy = new Proxy( Gio.DBus.session, GLib.getenv('FLATSEAL_PORTAL_BUS_NAME'), '/org/freedesktop/impl/portal/PermissionStore'); proxy.testPartialTableSync(); }